飞道的博客

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

334人阅读  评论(0)

参考资料:
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个语句
实验暂时没做


转载:https://blog.csdn.net/weixin_45456099/article/details/117263197
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场