使用STM32输出任意改变相位的PWM波形
时间:07-25 10:58 阅读:11555次
*温馨提示:点击图片可以放大观看高清大图
简介:本文介绍了使用STM32实现PWM输出任意改变相位的方法。
这是一个网友提出的问题:
STM32F103的输出的PWM能否任意改变相位?
回答是:能!
实现方法如下:
STM32的定时器的PWM模式使用TIMx_ARR寄存器控制PWM输出的频率,使用TIMx_CCRx寄存器控制PWM输出的占空比,如果需要移相,只需要在希望移动相位的时刻临时增加或减少TIMx_ARR寄存器的内容,过一个周期之后再恢复TIMx_ARR的内容即可。
这里的一个关键问题是,TIMx_ARR寄存器拥有影子寄存器,改变它的内容时并不会立即影响输出的信号波形,而是在输出波形的一个完整周期结束时才会把影子寄存器的内容拷贝到实际操作的寄存器,这样就可以保证输出波形的每一个周期都是完整的。如果没有影子寄存器,实现这种移相的要求是比较困难的,软件程序很难能够精确地对齐输出波形的周期边缘。