STM32CubeMX学习记录——配置定时器

一、学习目的

  在STM32学习中,定时器是一个非常重要的组成部分。本文将详细记录如何通过CubeMX工具配置定时器,以实现1ms的定时功能。(附计算公式)

二、CubeMX配置

(1)首先打开CubeMX软件,新建工程。有关软件使用以及新建工程的相关操作在之前的文章中已经有过记载,有需要可以查看以下文章:蓝桥杯嵌入式学习记录——点亮第一个LED(含软件的使用)_蓝桥杯嵌入式led-CSDN博客

(2)进入如下界面后,先点击System Core > RCC时钟选项,如图步骤所示打开高速时钟设置

(3)再点击SYS >Debug ,选择串口通信方式

(4)接着按照下图步骤修改时钟参数设置时钟频率为72MHz,以下提供修改后的参数图

(5)完成以上基础配置就可以开始配置定时器了,按照以下标注的操作步骤进行配置,1点击进入左侧的Timers>TIM2,2配置时钟源为内部时钟,3打开定时器中断设置

(6)配置定时器的参数,这一步用来设置定时的时长,定时时长的计算公式如下:

定时时间 = (预分频器值\times计数器重载值)/ 定时器时钟频率

脉冲频率 = 1 / 定时时间

由于我们前面设置的时钟频率为72MHz,因此,我们想要定时1ms就可以计算出:预分频器值\times计数器重载值 = 72000,即可以如下设置参数:

至此,定时器配置已经完成,接下来就可以按照如下步骤生成工程文件:

(1)给工程文件命名 > 选择编辑器

(2)选择生成文件类型 > 生成文件

三、代码编写

        CubeMX的配置完成之后,就可以打开工程文件进行代码编写了

(1)在编写代码时,首先需要使能定时器中断,可以通过以下代码进行开启和关闭

HAL_TIM_Base_Start_IT(&htim2); //使用定时器的时候调用这个函数启动
HAL_TIM_Base_Stop_IT(&htim2);  //停止定时器的时候调用这个函数关闭

        这里需要注意的是,一旦写下HAL_TIM_Base_Start_IT(&htim2); 函数,程序就会开启中断,所以一般写在主函数while循环前面,也可以根据需要写在对应操作后面

(2)以下是定时器中断服务函数,也叫回调函数:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM2)
  {
    //编写回调逻辑,即定时器2定时5MS后的逻辑
  }
}

        从代码中可以看出,函数会先进行判断,如果TIM2中断才会执行中断事件,也就对应了上面的“一旦写下HAL_TIM_Base_Start_IT(&htim2); 函数,程序就会开启中断”

        然后就可以编写相关的中断时间,例如希望定时1秒后点亮LED灯,可以如下编写代码:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    static int i;
  if(htim->Instance == TIM2)
  {
    if(i == 1000) // 执行1000次1ms定时,即1秒后
        {
            i = 0;   //让i = 0,重新计时
            LED = 0; // 点亮LED(需要另外配置和编写函数)
        }
  }
}

至此,定时器的配置就记录完成了

引用

感谢以下文章博主

STM32CubeMX——定时器配置_cubemx配置定时器-CSDN博客

蓝桥杯嵌入式学习记录——PWM输出_蓝桥杯pwm-CSDN博客

STM32CubeMX——定时器之定时功能_stm32cubemx 定时器-CSDN博客

STM32F030是一款基于ARM Cortex-M0内核的微控制器。在使用CubeMX配置STM32F030的定时器时,可以按照以下步骤进行操作: 1. 打开CubeMX软件,选择对应的芯片型号STM32F030。 2. 在"Pinout & Configuration"选项卡中,选择需要配置定时器。例如,选择TIM1作为定时器。 3. 在"Configuration"选项卡中,可以设置定时器的时钟源、预分频器和计数周期。根据需要,可以将时钟源设置为内部时钟或外部时钟,并根据需要设置预分频器和计数周期来实现所需的定时时间。 4. 在"NVIC Settings"选项卡中,可以使能定时器的中断,并设置中断优先级。 5. 在"Project"选项卡中,生成代码并导入到工程中。 在使用CubeMX生成的程序框架中,定时器的中断回调函数是共用的,可以通过判断输入参数htim来确定是哪个定时器的中断源。可以根据需要在用户端重写这个回调函数来实现特定的功能。 需要注意的是,具体的定时器配置参数(如预分频器和计数周期)需要根据实际需求来设置,以实现所需的定时时间。 #### 引用[.reference_title] - *1* [STM32CubeMx配置定时器](https://blog.csdn.net/qq_31073871/article/details/121657095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [STM32CubeMX学习四 之定时器配置](https://blog.csdn.net/weixin_42648781/article/details/126670397)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KAIs32

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值