STM32定时器输出比较
- PWM简介
主要用来输出PWM波形,PWM波形又是驱动电机的必要条件,所以如果想用STM32做一些有电机的项目,比如智能车,机器人等。那输出比较功能就要认真掌握
1.PWM驱动LED呼吸灯
2.PWM驱动舵机
3.PWM驱动直流电机
IC Input Compare 输入捕获
CC Capture/Compare 输入捕获和输出比较的单元
输入捕获和输出比较共用的,当使用输入捕获时,就是捕获寄存器
当使用输出比较时,就是比较寄存器。
在输出比较这里,这个电路会比较CNT和CCR的值,CNT计数自增,CCR是我们给定的一个值,当CNT大于CCR、小于CCR或者等于CCR时,这里输出就会对应的置1,置0,置1,置0.这样就可以输出一个电平不断跳变的PWM波形了。这就是输出比较的功能
通用计数器这四个通道有各自的CCR寄存器,但是它们是共用一个CNT计数器的。
高级定时器的前三个输出比较还额外具有死区生成和互补输出的功能。是用于驱动三相无刷电机的。暂时不作为重点内容
先主要学习通用定时器。
PWM简介
PWM秘诀:天下武功,唯快不破
应用场景必须是一个惯性系统,就是说LED在熄灭的时候,由于余晖和人眼视觉暂留现象。LED不会立马熄灭,而是有一定的惯性,过一小段时间才会熄灭。
电机也是,当电机断电时,电机的转动不会立马停止,而是有一定的惯性,过一会才会停。
具有惯性的系统才能使用PWM
高低电平跳变的数字信号,可以等效为中间虚线所表示的模拟量的。
PWM频率越快,那它等效模拟的信号就越平稳,同时性能开销就越大,一般PWM的频率在几KHz到几十KHz,这个频率就已经足够快了。
如果占空比只能以1%,2%,3%等这样以1%的步距跳变,那它的分辨率是1%,分辨率就是占空比变化的精细程度
分辨率需要多高,看项目的需要。如果既要高频率,又要高分辨率,这就对硬件电路要求比较高了。
左边是CNT计数器和CCR第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1,或者CNT=CCR1时,就会给输出模式控制器传一个信号,然后输出模式控制器就会改变它输出OC1REF的高低电平。
REF信号实际上就是指信号的高低电平,reference。 参考信号
ETRF输入,这是定时器的一个小功能,一般不用,需要了解。REF信号可以前往主模式控制器。
可以把REF映射到主模式的TRGO输出上去,
不过REF的主要去向还是下面这一路,CC1P是一个极性选择,给这个寄存器写0,信号就会往上走,就是信号电平不翻转。进来啥样出去就是啥样,写1的话,信号就会往下走,就是信号通过一个非门取反。那输出信号就是输入信号高低电平翻转的信号。这就是极性选择,就是选择是不是要把高低电平反转一下。接着就是输出使能电路,选择要不要输出,最后就是OC1引脚,这个引脚就是CH1通道的引脚,在引脚定义表里就可以知道具体是哪个GPIO口了。
这就是输出的通道
接下来还要看输出模式控制器,具体是怎么工作的。什么时候给REF高电平,什么时候给REF低电平。
此处高级定时器的第4个通道和通用定时器的结构基本是一样的
左边是CNT和CCR比较的结果,右边是输出比较电路,最后通过TIM_CH1输出到GPIO引脚上,下面还有三个同样的单元,分别输出到CH2、 CH3、 CH4