STM32 定时器(基于HAL库)

l  16位的向上、向下、向上/向下(中心对齐)计数模式,支持自动重装载

l  16位的预分频器

l  每个定时器都有多个独立通道,每个通道可用于

*  输入捕获

*  输出比较

*  PWM输出

*  单脉冲模式

l  高级定时器还可以产生互补输出

l  可以产生中断/DMA请求:

*  更新事件:计数器向上/向下溢出,计数器初始化(通过软或者内部/外部触发)

*  触发事件:计数器启动,停止,初始化或者有内部/外部触发计数

*  输入捕获

*  输出比较

一、定时器之计数模式 (一)  计数模式

向上计数

计数器从0向上计数(递增)到自动装载值,然后再次回到0开始计数,并产生一个计数溢出事件

 

向下计数

计数器从自动装载值向下计数(递减)到0,然后再次回到自动装载值开始计数,并产生一个计数器向下溢出事件

 

中央对齐模式(向上/向下计数)

计数器从0开始计数到自动装载值-1,并产生一个计数器溢出事件,然后再向下计数到0+1,并产生一个计数溢出事件,然后再向上计数。

 

STM32 定时器(基于HAL库)

(二)定时器的溢出时间计算

time=(ARR+1)*(PSC+1)/Tclk

 

ARR为自动装载值

PSC:预分频系数

Tclk:定时器的APB时钟,通常等于系统时钟

 

如:

tclk为72M

psc为7199

arr为4999

 

time=(4999+1)*(7199+1)/72 000 000 = 0.5s = 500ms

(三)CubeMX设置

这里需要注意的是你所需要使用的定时器是挂载在APB1还是APB2。相应的要调节他们时钟频率

 选择

STM32 定时器(基于HAL库)

 选择内部时钟

STM32 定时器(基于HAL库)

基础配置,这里配置的是1秒计数

STM32 定时器(基于HAL库)

l  Prescaler (PSC- 16 bits value),预分频器(PSC- 16位值)

l  Counter Mode,计数器模式:

up 向上

down 向下

Center Aligned mode 中心对齐模式

l  Counter Period (AutoReload Register - 16 bits value),重装载值

l  auto-reload preload,自动重装载开启

 

开启更新中断

中断优先级数字越低越高

STM32 定时器(基于HAL库)

(四)编程记录

中断开启

HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyyxj.html