久芯网

【STM32G431CBT6】使用LL_TIM_SetRepetitionCounter()更新TIM8的RCR寄存器,无法更改PWM输出的个数

avatar GingKo27 提问时间: 2023-07-10 13:34:42 / 已解决
如题,使用STM32CubeMX初始化,RCR寄存器设置为20-1,TIM8设置为单脉冲模式;进入程序后使用LL_TIM_SetRepetitionCounter(TIM8, 10-1),通过Keil MDK调试查看RCR寄存器确实修改为9,但是PWM输出的周期数仍然是20,没有变化


如需获得 STM32G431CBT6 等器件的更多信息,请点击链接或 点击此处 联系在线客服!

4个回答
  • avatar butterflyspring
    最佳答案
    回答时间: 2023-07-10 14:06:34

    TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载。加载需要产生一次更新事件(软件或硬件)。 楼主可以留意一下官方的初始化函数,最后通常都有一句软件产生更新事件的代码使其配置的参数真正加载上去,保证实时性。 否则就要在20个设定的定时器脉冲后才会加载上去,然后变回10个。

  • avatar xmshao
    回答时间: 2023-07-10 14:32:01

    RCR寄存器的确是可以随时修改的,不过它的生效需要借助更新事件,即修改后往往不能保证立刻生效。 如果你希望修改后立即生效,可以在修改后马上做个软件产生更新事件, 你可以加入类似这行功能的代码:TIMx->EGR = TIM_EGR_UG;

  • avatar GingKo27
    回答时间: 2023-07-10 14:55:49

    是否是更新RCR寄存器需要使能/失能其他寄存器?

  • avatar GingKo27
    回答时间: 2023-07-10 15:22:22
    butterflyspring 发表于 2022-12-16 12:07
    TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载 ...

    感谢回答,解决了我的问题,在使能通道后添加一句LL_TIM_GenerateEvent_UPDATE(TIMx);即可 在此处贴出RM0440原文

会员中心 微信客服
客服
回到顶部