嵌入式学习之定时器的PWM输出

配置步骤:

(1)使能定时器以及输出引脚的时钟(若用到重映射则使能AFIO时钟)。
(2)初始化GPIO,若没有重映射仅有复用则按照8.1.11配置就行了,若有重映射即打开重映射。例如:

在这里插入图片描述在这里插入图片描述
重映射都是固定的,比如上图你使能了TIM3的部分重映射,我们肯定是在确定要用到PB5或者PB4之后我们才去使能重映射。

(3)配置要用到的定时器的时钟来源以及时基单元:

注意:若我们使用内部时钟CK_INT作为时钟来源,应注意手册中的一句话:“这里的 CK_INT时钟是从APB1倍频的来的,STM32中除非APB1的时钟分频数设置为1,否则通用定时器TIMx的时钟是 APB1 时钟的 2 倍,当 APB1 的时钟不分频的时候,通用定时器 TIMx 的时钟就等于APB1 的时钟。”

(4)初始化pwm输出比较参数:见附2

①选择pwm输出模式
输出模式1:当计数器的值小于比较器的值时有效(无论是向上向下计数)
输出模式1:当计数器的值大于比较器的值时有效(无论是向上向下计数)

②选择输出极性
用来设置有效的信号是输出1还是0
③使能相应通道(对应引脚)的输出
④设置比较值

(5)设置时基单元的自动重装载和比较寄存器的自动重装载

注意:怎样理解计数器的ARPE位(怎样理解自动重装载):
在这里插入图片描述
假如ARR原值是300,修改为100:
ARPE写0时,无缓冲,直接写入影子寄存器。CNT本次跑到新值100就溢出。
ARPE写1时,等到CNT跑到原值300溢出后,才写入影子寄存器,下次跑到新值100溢出。

在这里插入图片描述

(6)使能相应的计时器
(7)通过库函数TIM_SetCompare1();操作寄存器CCR1改变比较值从而改变占空比,见附1.

注意:PWM输出的周期(也可以说频率)与时基单元的计数器有关,PWM输出的占空比(就是指正电平在一个周期内所占的时间比率)与比较器的值有关。
附1.PWM工作过程
在这里插入图片描述
附2.相应的寄存器
在这里插入图片描述

高级定时器的补充:

http://www.openedv.com/posts/list/28659.htm
通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。**每个桥的上半桥和下半桥是是绝对不能同时导通的,**但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。
(1)什么是死区?
死区就是在上半桥关断后延迟一段时间再打开下半桥,或在下半桥关断后延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。
方法论:因此,设计带死区的PWM波可以防止上下两个器件同时导通。也就是说,当一个器件导通后关闭,再经过一段死区,这时才能让另一个导通。
(2)什么是刹车功能
这个其实就是用来中止PWM输出的,由于经常用在电机控制中,所以叫刹车,break,中止、打断似乎更贴切。当检测到故障或其他原因可立刻停止电机运转,提高安全性。

猜你喜欢

转载自blog.csdn.net/weixin_44142774/article/details/106017100