打印
[其他ST产品]

高级定时器PWM占空比什么时候更新?

[复制链接]
1340|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Hufei1994 于 2020-10-5 20:54 编辑

大家好,我想问一下高级定时器PWM的更新时刻点能否自定义?我现在采用的是中间对其方式,如果我想要在三角波的最高点进行更新PWM应该怎么操作呢?

使用特权

评论回复
沙发
Hufei1994|  楼主 | 2020-10-7 11:10 | 只看该作者
有人知道么?

使用特权

评论回复
板凳
小灵通2018| | 2020-10-7 22:00 | 只看该作者
都要等到当前周期结束后更新。

使用特权

评论回复
地板
里面有晴雨| | 2020-10-9 11:23 | 只看该作者
当前周期结束之后,进行更新的。好好看看datasheet

使用特权

评论回复
5
香水城| | 2020-10-9 14:15 | 只看该作者
对于高级定时器,其更新事件的时间点是可以调整的。 具体结合你你这里,采用了中心对齐模式,你目的无非是想调整PWM的占空比,

你可以令RCR=1,在当前周期修改CCR、ARR,借助更新事件 在下一个周期生效.  

如果这样配置,更新事件发生在每次下溢的时刻。此时开启ARR/RCR的预装功能。


使用特权

评论回复
6
Hufei1994|  楼主 | 2020-10-9 16:00 | 只看该作者
香水城 发表于 2020-10-9 14:15
对于高级定时器,其更新事件的时间点是可以调整的。 具体结合你你这里,采用了中心对齐模式,你目的无非是 ...

版主,您好!
我在规格书中看到了这么一句话:
在中心对齐模式下,如果 RCR 值为奇数,更新事件将在上溢或下溢时发生,这取决于何时写入 RCR 寄存器以及何时启动计数器如果在启动计数器前写入 RCR,则 UEV 在上溢时发生。如果在启动计数器后写入 RCR,则 UEV 在下溢时发生。例如,如果 RCR = 3, UEV将在每个周期的第四个上溢或下溢事件时生成(取决于何时写入 RCR)。
1、根据上述所有,如果我想在每个周期上溢出进行更新,需要在定时器启动之前修改RCR寄存器值为 1 ,我是用的是Cubemx自动生成的代码,那么修改寄存器这个操作是放在 MX_TIM1_Init() 前面,还是 HAL_TIM_Base_Start(&htim1) 前面?是不是只需要写一次?
我的理解如下图所示,第K次上溢更新的CRR值是K-1次采样数据计算出来的。
2、关于您说的 ARR/RCR的预装功能 是什么作用呢?是否一定要进行开启?

PWM.png (38.49 KB )

PWM.png

使用特权

评论回复
7
香水城| | 2020-10-10 13:37 | 只看该作者
本帖最后由 香水城 于 2020-10-10 16:31 编辑

1、关于第一个问题。
在中心对齐计数模式下,如果你要求在每个周期的上溢点产生更新事件,你可以在初始化定时器后修改RCR=1,TIM1->RCR=1;
你现在使用的cubemx进行配置,RCR那个地方先保持0默认值不动。


修改寄存器这个操作是放在 MX_TIM1_Init() 的后面,一次即可。
  。。。。。。


  MX_GPIO_Init();
  MX_TIM1_Init();

    TIM1->RCR=1;


     。。。。。。
第2个问题:
它涉及到ARR/RCR/CCR等带预装功能的数据生效问题,当开启预装功能时,
它们的寄存器内容在发生更新事件时才生效,否则即改即有效。 像你这里开启
预装功能合适些。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

160

帖子

0

粉丝