第一篇博客(不足之处还请多说教于我,感谢大家)关于STM32-TIM14定时器

时间:2024-04-05 11:29:10

认识通用定时器TIM14
最近在开始做四路驱动的小车,预想着先用PWM控制玩玩,找来了官方发布的程序,开始研究代码,我个人感觉重点在于TIM14时钟的
部分寄存器的配置。
TIM14->ARR=arr; //设定计数器自动重装值
TIM14->PSC=psc; //预分频器不分频
TIM14->CCMR1|=6<<4; //CH1 PWM1模式
TIM14->CCMR1|=1<<3; //CH1 用预装载使能(原本是使用预装载)
TIM14->CCER|=1<<0; //OC1 输出使能
TIM14->CCER|=1<<1; //OC1 低电平有效
TIM14->CR1|=1<<7; //ARPE使能
TIM14->CR1|=1<<0; //使能定时器14

首先前两个ARR和PSC用来配置计数频率
CCMR寄存器
第一篇博客(不足之处还请多说教于我,感谢大家)关于STM32-TIM14定时器
可以看到将110左移四位给OC1M,得到PWM1模式
将1左移3位给0C1PE得到预装载使能
CCER寄存器
第一篇博客(不足之处还请多说教于我,感谢大家)关于STM32-TIM14定时器
CC1E在输出的模式下 得1,1:开启——在相应输出引脚上输出 OC1 信号
CCIP在输出模式下得1,1: OC1 低电平有效。

CR1寄存器
第一篇博客(不足之处还请多说教于我,感谢大家)关于STM32-TIM14定时器
TIM14->CR1|=1<<7; 1: TIMx_ARR 寄存器进行缓冲,ARR为自动重装载寄存器。
TIM14->CR1|=1<<0; 1:使能计数器;也就是使能TIM14;

另外有一段程序让我想了好久(就是一糊涂哈哈)
LED0_PWM_VAL=led0pwmval;
这一段,其中#define LED0_PWM_VAL TIM14->CCR1 ;
CCR1寄存器很有意思,
第一篇博客(不足之处还请多说教于我,感谢大家)关于STM32-TIM14定时器
联系上了之前设置的预装载位,我尝试了取消预装载之后会是一个怎么样的结果,发现结果和之前没多大变化,让我不禁有些好奇,
去搜下别的资料发现,预装载和不设预装载,之前效率差了很多,预装载在当ARR值被修改时,同时马上更新影子寄存器的值;而不
用预装载设置则会当ARR值被修改时,必须在下一次事件发生后才能更新影子寄存器的值。
其他设置的部分没什么好细究的,几乎都是统一配置了,如果自己想修改频率,也就是把ARR和PCS进行就该就可以做到。
(写到这里总觉得好像写的糊里糊涂,但是也不知道哪里不对劲,看到的各位大佬如果方便的话,还请不吝赐教,下期再见。有问题的 小伙伴也可以私信我,或者评论区留言,一起加油昂)