STM32CubeMX定时器配置指南
基于STM32CubeMX的定时器配置
说明
本文将会以STM32F103C8T6为例配置定时器2定时5 ms
定时器简介
SMT32F1系列共有8个定时器:
基本定时器(TIM6、TIM7)
通用定时器(TIM2、TIM3、TIM4、TIM5)
高级定时器(TIM1、TIM8)
基本定时器功能(TIM6、TIM7):
- 16位向上、向下、向上/下自动装载计数器
- 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为 1~65535之间的任意数值
- 触发DAC的同步电路 注:此项是TIM6/7独有功能.
位于APB1总线上
通用定时器(TIM2~TIM5)的主要功能:
- 16位向上、向下、向上/下自动装载计数器
- 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
- 4 个独立通道(TIMx_CH1~4)可以用作:
- 支持针对定位的增量(正交)编码器和霍尔传感器电路
- 位于总线APB1上
高级定时器(TIM1,TIM8)的主要功能:
还具有控制交直流电动机所有的功能,
输出6路互补带死区的信号,刹车功能等等
需要具体了解请看原文,链接如下。
原文链接:lihttps://blog.csdn.net/lcp0633/article/details/111145199nk
STM32CubeMX配置
新建工程

设置时钟源RCC

设置时钟

设置定时器
T = (psc+1)(arr+1)/Tclk
1/[72/(71+1)]*(4999+1)=5ms
项目文件设置


代码部分
找到main函数,里面关于TIM2初始化的函数 MX_TIM2_Init(),进入初始化函数,查看源码
从上面代码可以看到,先定义了一个htim2的结构体
然后是对结构体的初始化,就是我们图形化的配置
再找到stm32f1xx_it.c文件
上面的代码是如果TIM2中断,则调用 HAL_TIM_IRQHandler(&htim2);
进入HAL_TIM_IRQHandler(&htim2)函数,这里面的代码很长,就是不同的中断类型,进入不同的中断回调函数,这里找到 HAL_TIM_PeriodElapsedCallback(htim);
进入这个回调函数,我们看到是个虚函数,需要我们重写,在这个函数里面,就是我们需要实现的功能,但在这之前,需要在main函数里使能中断 HAL_TIM_Base_Start_IT(&htim2)
所以使用的代码如下:
下面展示一些 内联代码片
。
// An highlighted block
HAL_TIM_Base_Start_IT(&htim2); //使用定时器的时候调用这个函数启动
HAL_TIM_Base_Stop_IT(&htim2); //停止定时器的时候调用这个函数关闭
/* 定时器回调函数 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2)
{
//编写回调逻辑,即定时器2定时5MS后的逻辑
}
}
引用
最好,将本文所引用的链接放在这里,以供参考
STM32CubeMX——定时器之定时功能:https://blog.csdn.net/lcp0633/article/details/111145199
STM32 Cubemx 配置定时器定时1mS:
https://www.cnblogs.com/xingboy/p/9897500.html