当前位置: 首页 > news >正文

使用STM32CubeMX配置定时器中断实现LED每秒闪烁一次(STM32G070CBT6)

说明:

本案例采用的定时器3(TIM3)实现,使用其他定时器是一样配置。

如何新建一个工程以及如何配置LED的端口,请查看前面文章:使用STM32CubeMX实现LED灯每秒闪烁一次(STM32G070CBT6单片机)-CSDN博客

1.配置SYS

2.配置RCC

3.配置系统时钟

此处配置系统时钟为64MHz。

注意!!!

此处系统时钟要采用HSI,如果采用HSE则将不能实现功能。

4.配置定时器TIM3

定时时间计算公式:

定时时间 = (Prescaler+1)× (Counter +1)/ 定时器时钟频率

例如,这里定时时间为 10ms,可设置Prescaler = 64-1;Counter = 10000 - 1;(TIM3时钟频率设置为64MHz)

(1)配置定时器

(2)配置定时器中断

5.点击生成文件。

6.添加代码实现功能

要想使用定时器3,那么需要先将其打开。采用如下函数打开。

HAL_TIM_Base_Start_IT(&htim3);    //开启定时器3

要实现LED闪烁,还需要增加定时器回调函数,在其中添加LED闪烁功能代码。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char count = 0;
    if(htim->Instance == TIM3)    //处理TIM3间隔定时中断
    {
        count++;
        if(count >= 50)    //10ms*50=500ms
        {
            count = 0;
            HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);    //每500ms翻转一次,LED每秒闪烁一次
        }
    }
}

main.c文件中的代码:

//要增加的代码
//定时器回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static unsigned char count = 0;
    if(htim->Instance == TIM3)    //处理TIM3间隔定时中断
    {
        count++;
        if(count >= 50)    //10ms*50=500ms
        {
            count = 0;
            HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);    //每500ms翻转一次,LED每秒闪烁一次
        }
    }
}

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM3_Init();

  HAL_TIM_Base_Start_IT(&htim3);    //要增加的代码,开启定时器3

  while (1)
  {
    
  }
 
}

7.实现现象

定时器实现LED每秒闪烁一次

http://www.dtcms.com/a/63137.html

相关文章:

  • 【Yonghong 企业日常问题07 】 东方通TongWeb替代Tomcat的实战指南!
  • ubuntu中用docker下载opengauss
  • 利用 ECB 加密 json并压测接口,输出测试报告
  • 计算机网络基础:PKI(公钥基础设施)
  • vue el-select 省市区三级联动 vue + element-ui使用第三方插件实现省市区三级联动
  • BambuStudio学习笔记:MinAreaBoundigBox
  • 远程手机遥控开关原理及应用
  • 如何安全处置旧设备?
  • Java 无 GUI 浏览器:HtmlUnit 入门及实战 [特殊字符]
  • Linux笔记
  • 消防设施操作员考试:理性分析与科学备考​
  • jQuery补充
  • Python----数据可视化(Seaborn合集:介绍,应用,绘图,使用FacetGrid绘图)
  • DiskGenius 硬盘管理工具下载+D盘空间扩容给C盘教程
  • Manus 演示案例:自动完成小说编写并生成最终 PDF 文档
  • 【Linux-传输层协议UDP】再谈端口号+UDP协议+深度理解UDP
  • AI 赋能软件开发:从工具到思维的全面升级
  • 【网络协议详解】——QOS技术(学习笔记)
  • Redis-缓存穿透击穿雪崩
  • paimon---同步mysql数据到paimon表中
  • 基于Spring Boot的国产动漫网站的设计与实现(LW+源码+讲解)
  • TDengine 数据对接 EXCEL
  • 记一次Spring Boot应用中数据库连接阻塞问题排查过程
  • 重生之我在学Vue--第8天 Vue 3 UI 框架(Element Plus)
  • 深度学习——Diffusion Model学习,扩散模型
  • deepseek使用记录21——游击战略问题
  • python 中用到的文件操作
  • 从运营出发:打造更适配当下营商环境的一对一直播系统源码
  • MySQL(第3周)-database命令
  • Python自动点击器开发教程 - 支持键盘连按和鼠标连点