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输出及频率和脉宽(占空比)的计算——寄存器配置六步曲!(转)