如题,使用STM32CubeMX初始化,RCR寄存器设置为20-1,TIM8设置为单脉冲模式;进入程序后使用LL_TIM_SetRepetitionCounter(TIM8, 10-1),通过Keil MDK调试查看RCR寄存器确实修改为9,但是PWM输出的周期数仍然是20,没有变化 |
如需获得 STM32G431CBT6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!
TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载。加载需要产生一次更新事件(软件或硬件)。 楼主可以留意一下官方的初始化函数,最后通常都有一句软件产生更新事件的代码使其配置的参数真正加载上去,保证实时性。 否则就要在20个设定的定时器脉冲后才会加载上去,然后变回10个。
RCR寄存器的确是可以随时修改的,不过它的生效需要借助更新事件,即修改后往往不能保证立刻生效。 如果你希望修改后立即生效,可以在修改后马上做个软件产生更新事件, 你可以加入类似这行功能的代码:TIMx->EGR = TIM_EGR_UG;
是否是更新RCR寄存器需要使能/失能其他寄存器?
TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载 ...
感谢回答,解决了我的问题,在使能通道后添加一句LL_TIM_GenerateEvent_UPDATE(TIMx);即可 在此处贴出RM0440原文