STM32的定时器中断Cubemx
- 0.定时器简介
- 1.配置时钟
- 2.配置定时器
- 3.创建工程
- 4.补充源码
0.定时器简介
基本定时器功能:
- 16位向上、向下、向上/下自动装载计数器
- 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
- 触发DAC的同步电路 注:此项是TIM6/7独有功能.位于APB1总线上
通用定时器的主要功能:
- 16位向上、向下、向上/下自动装载计数器
- 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
- 4 个独立通道(TIMx_CH1~4)可以用作:
测量输入信号的脉冲长度( 输入捕获)
输出比较
单脉冲模式输出
PWM输出(边缘或中间对齐模式)
支持针对定位的增量(正交)编码器和霍尔传感器电路
如下事件发生时产生中断/DMA:
更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
输入捕获
输出比较
位于APB1总线上
高级定时器的主要功能:
- 高级定时器具有基本,通用定时器的所有的功能,还具有控制交直流电动机所有的功能,
- 输出6路互补带死区的信号,刹车功能等等
位于APB2总线上
总括:基本定时器就是单纯的定时计数器,通用定时器多了四个通道,相对应的增加了功能,高级定时器具有基本,通用定时器的所有的功能,并且添加了其他功能
1.配置时钟
使用外部石英晶振提供时钟频率
2.配置定时器
定时时间计算公式
溢出时间=(计数周期+1)*(分频+1)/时钟频率
时钟频率要看使用的定时器挂在那个时钟树上,查看是时钟树的频率即可
3.创建工程
4.补充源码
打开工程后,找到回调函数
在主函数中重写该函数即可:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
/* USER CODE BEGIN PV */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == (&htim6))
{
/*自己的业务逻辑*/
}
}
/* USER CODE END PV */
在main.c主函数上方初始化使能定时器:
/* USER CODE BEGIN 2 */
/*使能定时器1中断*/
HAL_TIM_Base_Start_IT(&htim6);
/* USER CODE END 2 */