OpenEdv-开源电子网

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

如何在PWM中断中设置周期和占空比?

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2014-6-19
在线时间
16 小时
发表于 2014-6-21 17:00:23 | 显示全部楼层 |阅读模式
5金钱
我看原厂固件库和战舰板子的例程基本上都是将占空比的更新放在总循环里面,而且周期都没有更新,按说马达的起步和结束等实际应用都要求周期和占空比同步变化的,而且变化更新放在总循环里面也不合实际应用要求。我尝试着在更新中断里面加入周期(ARR)和占空比(CCR2)的更新,输出波形会有变化,但变化没有根据和规律,不是我想要的。资料中说Autoreload register更新后需要设置EGR寄存器的UG位,我设置后连波形都没有了。不知哪位大侠有过类似更改和经验,请指导我一下

最佳答案

查看完整内容[请看2#楼]

回复【3楼】ccd007: --------------------------------- ARR,PSC,CCRx这几个寄存器,如果你不需要更新,就只需要设置一次就是了,在UG置位后,他们的值就会起作用了。 如果你要修改ARR,那就直接改ARR的值就是了,要修改的时候,直接改ARR,你可以设置立即更新,还是等更新时间产生后再更新(通过CR1的ARPE控制)。 在更新中的,是可以更新周期的,你在中断里面,修改PSC/ARR的值,就可以控制频率了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-21 17:00:24 | 显示全部楼层
回复【3楼】ccd007:
---------------------------------
ARR,PSC,CCRx这几个寄存器,如果你不需要更新,就只需要设置一次就是了,在UG置位后,他们的值就会起作用了。
如果你要修改ARR,那就直接改ARR的值就是了,要修改的时候,直接改ARR,你可以设置立即更新,还是等更新时间产生后再更新(通过CR1的ARPE控制)。

在更新中的,是可以更新周期的,你在中断里面,修改PSC/ARR的值,就可以控制频率了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-22 00:15:39 | 显示全部楼层
你知道周期和占空比受什么控制,就知道怎么修改了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2014-6-19
在线时间
16 小时
 楼主| 发表于 2014-6-23 11:20:47 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我看控制寄存器中说设置了UG后,ARP,PSC,CCRX都被重新初始化,难道我需要都重新定义一次?如果这样只能用寄存器模式来写了,否则效率也太慢了吧?而且这样像是单次输出似的。我看论坛中有人说在滴答定时器中更新,可这样给人感觉也很不正规的样子,而且影子寄存器有一个很长的缓冲吗?我如果提前设置了两个以上的ARP,是顺序使用,还是使用最后一个?没人做过直接在更新中断中更新周期吗?我以前是用过ATMEL和ti的片子都能直接在中断中设置下一周期的周期的。ST的刚刚使用,感觉定时器设置的挺复杂的,看起来很费劲。不知哪位大侠做过类似的工作,望不吝指点,多谢?
回复

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2014-6-19
在线时间
16 小时
 楼主| 发表于 2014-6-24 15:23:38 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
谢谢,经过多次测试验证,终于弄明白了。1、一般是此次中断设置参数,接下来的波形不会立即起作用,要下次中断后才能起作用。以此往后延续。2、预装寄存器确实是有缓冲,至少能记住前面两次设置的参数(我只设置了这么多)。谢谢版主原子。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 00:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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