你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

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

收藏 评论4 发布时间:2022-12-16 11:22

举报

4个回答
butterflyspring 最优答案 回答时间:2022-12-16 12:07:57
TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载。加载需要产生一次更新事件(软件或硬件)。 楼主可以留意一下官方的初始化函数,最后通常都有一句软件产生更新事件的代码使其配置的参数真正加载上去,保证实时性。 否则就要在20个设定的定时器脉冲后才会加载上去,然后变回10个。
xmshao 回答时间:2022-12-16 13:29:38
RCR寄存器的确是可以随时修改的,不过它的生效需要借助更新事件,即修改后往往不能保证立刻生效。


如果你希望修改后立即生效,可以在修改后马上做个软件产生更新事件,


你可以加入类似这行功能的代码:TIMx->EGR = TIM_EGR_UG;
GingKo27 回答时间:2022-12-16 11:27:45
是否是更新RCR寄存器需要使能/失能其他寄存器?
GingKo27 回答时间:2022-12-16 13:46:18
butterflyspring 发表于 2022-12-16 12:07
TIM8的RCR寄存器内容必须使能一次更新事件后才能加载进去。 楼主用的函数仅仅是写了寄存器,并没有真正加载 ...

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

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版