STM32-进阶-定时器
STM32 进阶 定时器
在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桥电路。