在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桥电路。