OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1092|回复: 3

PWM输出如果周期一定,占空比一直想变的话,配置的间隔必须与周期一至吗?

[复制链接]

83

主题

765

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2752
金钱
2752
注册时间
2015-6-1
在线时间
392 小时
发表于 2024-1-6 09:02:05 | 显示全部楼层 |阅读模式
1金钱
一直不明白硬件PWM输出是怎么配置占空比的,比如周期10ms,我5ms设置一次也能产生周期为10ms的波形,占空比也对。1分钟设置一次也行,期间的占空比一直对。所以它没必要配置的间隔与周期一至是吧?

每次配置后为什么不是立刻执行新的一个周期?而是硬件会自动把当前周期执行完再开启一个新配置的占空比的周期?

自在随心
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

83

主题

765

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2752
金钱
2752
注册时间
2015-6-1
在线时间
392 小时
 楼主| 发表于 2024-1-6 09:13:32 | 显示全部楼层
想起这个事是因为,我遇到一个bug。在上电后Duty_Cycle是0.042,此时单片机一直输出一个固定占空比,周期为20ms。但是TMR3_PWM_CH3_Config这个函数我发现5ms执行一次或是20ms执行一次都可以正常输出波形,就一直5ms执行一次的。
void TMR3_PWM_CH3_Config(float Duty_Cycle)
{
    uint32_t ch3_val = 0;

    ch3_val = 24000 * Duty_Cycle;
    tmr_channel_value_set(TMR3, TMR_SELECT_CHANNEL_3, ch3_val);
}

但是它控制的是一个舵机,我发现这个舵机莫名其妙会动,我不改占空比理论上就不会动,但是它动了。所以好像只能是配置的间隔有问题?这也没啥其它的代码啊?
自在随心
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2024-1-6 15:59:57 | 显示全部楼层
每次配置后为什么不是立刻执行新的一个周期?
-----------------------------------------------
可以的, 设置完CCR1后把CNT清零, 或把 EGR.UG 设为1, 就能做到你要的新一个周期。

但用EGR.UG 设为1,它会产生溢出中断。
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2024-1-6 16:05:49 | 显示全部楼层
yuzeyuan1 发表于 2024-1-6 09:13
想起这个事是因为,我遇到一个bug。在上电后Duty_Cycle是0.042,此时单片机一直输出一个固定占空比,周期为 ...

应该你是用了分频, 分频的值只会在发生溢出事件后才会加载到分频寄存器的。
EGR寄存器可以解决此问题, 了解一下EGR寄存器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表