stm32修改PWM频率的同时,占空比不变

Posted 一剃解千愁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32修改PWM频率的同时,占空比不变相关的知识,希望对你有一定的参考价值。

参考资料:
stm32影子寄存器、预装载寄存器,TIM_OC1PreloadConfig和TIM_ARRPreloadConfig的作用
STM32定时器自动重装载寄存器和预加载寄存器的区别与联系

关于STM32影子寄存器和预装载寄存器和TIM_ARRPreloadConfig
结合代码与手册分析这两个函数

void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload)

在这里插入图片描述
第一个参数:哪个定时器的通道1
第二个参数:使能还是失能
在这里插入图片描述过程:
1**,临时保存CCMR1的整个16位值**
2,将第3位OC1PE位(0x0008)取反(得到0xfff7)再和临时保存值按位与,也就是对第3位清0
在这里插入图片描述
3,对第3位被清0后的临时值按位或,也就是再从新对第3位写1(0x0008)或0(0x0000)
在这里插入图片描述
4,最后将临时值写入16位寄存器CCMR1,整个过程也就是修改了第3位。

void TIM_ARRPreloadConfig(TIM_TypeDef* TIMx, FunctionalState NewState)

在这里插入图片描述
第一个参数:哪个定时器
第二个参数:使能还是失能
过程:
根据是哪个定时器使能能还是失能,将位置1或0
在这里插入图片描述
ARPE在控制寄存器的第7位,对应0x0080
在这里插入图片描述
1,直接或,怎么不用先清0?
或运算:假如这位是1,那1或1是1,1或0还是1,强制使得改为置1.
2,按位取反再按位与,结果写入CR1,整个过程也就是修改了第7位。
这个过程比上面那个效率更好,才2个语句
实验暂时没做

以上是关于stm32修改PWM频率的同时,占空比不变的主要内容,如果未能解决你的问题,请参考以下文章

STM32中的PWM的频率和占空比的设置

详解STM32的PWM输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!(转)

stm32输出的pwm有啥用

STM32基础问题分析——PWM配置

STM-32:TIM输入捕获—输入捕获模式测频率/PWMI模式同时测量频率和占空比

STM32如何设置PWM波的频率为10HZ