STM32 进阶 定时器

发布于:2025-03-07 ⋅ 阅读:(78) ⋅ 点赞:(0)

在stm32中定时器大概分为4类

1、系统定时器:属于arm内核,内嵌在NVIC中

2、高级定时器:可以用来刹车和死区

3、通用定时器:可以用来输出pwm方波

4、基本定时器:只能记数

系统定时器注意:

1、系统定时器多长时间触发中断计算:首先它是24位向下递减的计数器,所以它最大时2的24次方,计数器每计数一次的时间为1s / SYSCLK---下面是验算过程,可以看到如果时72M时钟频率,那么多大是233ms触发中断。---通过这个计算可以计算其reloard的值配置多少。

 2、hal库中的NVIC中断system tick使能和寄存器STRL中断TICKINT使能位同时置1才算开启中断

3、内核中断没有明确的标识位,count flag时计数标志位,不是中断标志位,所以使用systick中断时,不需要标志位清零操作。

4、可以使用systick_config函数,直接配置systick寄存器,只需要传输重装在寄存器的值也就是reload 的值。

基本定时器:tim6/tim7

16位自动装载计数器

向上计数

没有外部引脚,所以只能计时,且不能对外部脉冲就行计数

功能:

定时中断、主模式、触发DAC

注意

通过手册可以知道不管什么定时器都经过分频变成72MHz

基本定时器:只有一个时钟源就是总线时钟、一般为72MHz,而高级和通用可以通过引脚来调节

基本定时器的内部的时基单元要比systick多一个预分频器,可以进行自我调节---计数器频率

还有影子寄存器:防止定时器出现不可控的状态(计数器跑飞)

通用定时器:tim2/3/4/5

功能:

1、多种时钟源

2、计数方向:向上/向下计数,也可以先加后减---但是我们通常配置向上计数和基本定时器一样

3、输出捕获

4、输出比较和pwm生成:输出比较功能专门用来生成pwm方波的

5、支持针对定位的增量(正交)编码器和霍尔传感器电路

注意

1、每个通用定时器都有四个通道,但是只有通道1和2可以作为时钟信号源---对标72MHz

2、PWM(脉冲宽度调制 Pulse-width modulation)---脉冲也就是电平,pwm就是控制电平的持续时长

3、PWM有三个参数

周期:两个上升沿或者两个下降沿的时间

频率:周期的倒数,1秒多少个周期

占空比:高电平在整个周期站的时间---高电平宽度T---如果时电机那么它影响转速,如果是led等它影响亮度。

  4、输出比较功能如何输入pwm方波,因为有四个通道所以可以同时实现四路比较,比较寄存器的值和计数器的值进行比较,(>=<)不同,产生不同的输出,高电平或者低电平。总过8个模式,最重要的是3个。最最常用的是模式7

翻转比较:等于会进行高低电平翻转最后的结果就是占空比为50%。

模式7pwm模式1:CNT<CCR 输出有效电平,CNT>= CCR输出无效电平----OCxM配置110

模式8PWM模式2:CNT<CCR 输出无效电平,CNT>= CCR输出有效电平

5、捕获(输入)和比较(输出)只能选一个

高级定时器:tim1/tim8

功能:

1、通用寄存器所有功能

2、死区时间可编程的互补输出

3、短路输入信号(刹车输入信号)

4、重复计数器。---计数器减到0,重复计数器减1,直到到0才触发中断。

注意:

1、高级定时器的通道1/2/3可以分别输出2路互补信号,互补信号用来驱动H桥电路,H桥电路通常用于驱动电流较大的负载,比如电机。

2、死区时间,是指在互补信号中的一条信号加一掉段延迟,防止两条信号线同时产生跳变,保护了H桥电路,也就是说,在延迟的这段时间H桥电路中的MOS管可以进行放电,保护H桥电路。