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

外部中断得出PWM波形的占空比和频率

[复制链接]
flyinggirlxhx 提问时间:2016-7-2 16:39 /
各位好!
       刚接触STM32F103ZE开发板很短的时间,打算利用GPIO的外部边沿触发,计算出PWM波形的占空比。
       有两个方法:
       (1)利用定时器的PWM捕获功能,这种方法已实现,但考虑资源的有限性,打算用第二种方法来实现;
       (2)PWM波形触发gpio引脚的双边沿外部中断(EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; 引脚初始化输入0),由计时器TIM2记录上升边沿和下降边沿时的TIM2->CNT;
             这样,第1次进入上升沿中断时,设置TIM2->CNT=0;之后正常计数,第2次下降沿中断时,记下cn2=TIM2->CNT的值;第3次进入上升沿中断时,同样记下cn3=TIM2->CNT,进入中断的次数清0;如此循环。
            PWM的占空比duty=(float)cn2/cn3;
           但。。。。。输入的PWM信号用示波器监测着,是标准的矩形波,没有问题,占空比为1/3;但是通过串口得到的占空比却是1/3,2/3随机出现。。。找了好久,还是没找到原因。
          有几个疑问:
             1.外部中断的双边沿中断,是指上升沿和下降沿都可以产生中断吗?不管边沿的顺序?两个中断是怎么交替工作的?
             2.PWM的输入引脚,设置为上拉或是下拉输入模式有影响吗?
            项目时间很急,今天周六来公司加了一天的班,就为这个问题。。。。
            拜谢各位大神指教,急急急急。。。。。谢谢了!
收藏 2 评论8 发布时间:2016-7-2 16:39

举报

8个回答
haohao663 回答时间:2016-7-2 23:27:05
外部中断的双边沿中断:就是不够是上升沿还是下降沿都触发,总之就是有电平跳变就触发中断
我觉得你可以在一进入外部中断服务函数就马上读取该引脚的电平,这样就可以确定目前处于什么状态
另外一种思路就是开始只开上升沿触发,在外部中断服务函数内开下降沿触发,这样循环处理

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 很给力!

查看全部评分

haohao663 回答时间:2016-7-2 18:35:30
【HAL库每天一例】第018例:TIM-通用定时器输入捕获(脉冲测...
https://www.stmcu.org.cn/module/ ... &fromuid=331315
(出处: 意法半导体STM32/STM8技术社区)
这个例程值得你拥有,原理都是一样的

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2 赞一个!

查看全部评分

flyinggirlxhx 回答时间:2016-7-2 22:37:22
haohao663 发表于 2016-7-2 18:35
【HAL库每天一例】第018例:TIM-通用定时器输入捕获(脉冲测...
https://www.stmcu.org.cn/module/forum/forum.p ...

嗯,这个demo我了好几遍,我这边用这种方法也没问题。但换成外设中断,就有点问题,不知道是不是触发边沿的问题,周一回去,再测试看看。。。谢谢啦
swiky99 回答时间:2016-7-3 00:38:09
目前正在做的一个   脉冲捕捉    捕捉频率18K----30K   捕捉精度好像也行    就差1-2US   
但出现一个问题还没解决   就是TIM1互补输出的18K---30K    频率好像有点飘    有点不准   
过几天换个精度高点的晶振看看   
相互学习下    需要代码可以送
swiky99 回答时间:2016-7-3 00:39:44
STM32有没有   FAE呢    请人家帮忙出出主意   本人QQ34778119
flyinggirlxhx 回答时间:2016-7-4 12:55:14
haohao663 发表于 2016-7-2 23:27
外部中断的双边沿中断:就是不够是上升沿还是下降沿都触发,总之就是有电平跳变就触发中断
我觉得你可以在 ...

如果采用双边沿触发,加上电平判断之后,无法捕捉到下降沿(PCout(1)=1),上升沿是可以捕捉到的,所以计算出的周期是对的;
如果采用上升沿下降沿循环触发的话,对触发边沿的改变没有用,无法触发下降沿(初始化是上升沿触发),所以周期是正确的周期的2倍。。。
这是触发边沿改变的代码:EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_Init(&EXTI_InitStructure);
没找到问题的点在哪?
flyinggirlxhx 回答时间:2016-7-4 13:12:17
swiky99 发表于 2016-7-3 00:38
目前正在做的一个   脉冲捕捉    捕捉频率18K----30K   捕捉精度好像也行    就差1-2US   
但出现一个问题 ...

我这边是输出80KHZ的方波,你有做占空比吗?我加你QQ吧,谢谢!
flyinggirlxhx 回答时间:2016-7-6 09:12:36
IO口外部中断计算PWM波形的占空比和频率

这是我的新问题。。。哎。。。各位指点指点啊

所属标签

相似问题

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