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

STM32怎么产生精确数量的互补PWM

[复制链接]
志在远方 提问时间:2018-6-6 08:18 /
我想用PWM输出4组互补的PWM,但是要求精确个数的PWM,比如,我要输出互补的PWM脉冲数量是10个。输出10个后关闭,我下次开启的时候再输出10个后关闭。我用高级定时器TIM1的重复计数寄存器的时候,给TIMx_RCR赋值9.根据手册应该会10吃益出后才会进中断。但是调试的时候,发现每次益出都进中断。还有不知道为什么,CC1IF~CC4IF的中断标志位一直是1.我CCxIE的中断使能位是关闭的。我用的是STM32L496的片子请教给我大神,解决。谢谢!
收藏 评论9 发布时间:2018-6-6 08:18

举报

9个回答
七哥 回答时间:2018-6-6 11:30:14
楼上以回答。
我来补充一下,
加一个计数变量,初始化置0,开启PWM时开中断;
在PWM定时器更新中断服务函数中计数,进一步中断计一次数,当满10次,关闭PWM定时器,复位计数变量值为0;
下次要用输出PWM的时候,直接开启PWM,并开中断。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

loveu99 回答时间:2018-6-6 08:32:29
要使用定时器的更新中断。定时器会在输出(TIMx_RCR+1)次进入中断,此时关闭PWM输出即可。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

xmshao 回答时间:2018-6-6 11:21:01
1、你可以结合更新中断10次后手动关闭OC输出。
2、或者使用单脉冲模式结合重复计数器10次后自动停止OC输出;

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-6-6 11:40:20
使用一个GPIO口中断读PWM上升或下降沿,计数10次后停止PWM

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

志在远方 回答时间:2018-6-7 07:25:21
file:///C:/Users/JiangYz/Desktop/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20180607071256.jpg
用RCR+1,产生更新中断关闭PWM,可以产生固定个数的PWM了,但是最后一个波,形状变行严重,请问各位有遇到这种情况吗?,应该怎么解决。谢谢!
志在远方 回答时间:2018-6-7 07:28:51
可以产生固定个数的PWM了,但是最后一个波形变了,如图
微信图片_20180607071256.jpg
微信图片_20180607071256.jpg
倾成 回答时间:2018-6-13 09:39:07
您好,你的问题解决了吗。我使用重复计数器,为什么不能进更新中断呢。的重复计数器是和单脉冲一起用的么。
asdfg221111 回答时间:2018-6-18 10:16:59
看来要学的东西还多啊
mmyjy 回答时间:2018-12-27 16:56:15
您好,您这是采用的一个高级定时器产生的两路pwm输出吗?如何配置的呢?还请赐教。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版