硬汉嵌入式论坛

 找回密码
 立即注册
查看: 268|回复: 11
收起左侧

[TIMER] STM32定时器输入捕获实现双边沿检测

[复制链接]

10

主题

25

回帖

55

积分

初级会员

积分
55
QQ
发表于 7 天前 | 显示全部楼层 |阅读模式
我最近在开发板上写一个定时器双边沿触发测高电平脉宽的程序,发现是不是所谓的双边沿(TIM_INPUTCHANNELPOLARITY_RISING)这个双边沿好像意思是高电平之后低电平才触发,而我理解的是高电平来了触发一次,低电平来了也触发一次   
    // 双沿捕获
    sConfigIC.ICPolarity  = TIM_INPUTCHANNELPOLARITY_RISING;
    sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
    sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
    sConfigIC.ICFilter    = 0x0;
求助各位大佬我的理解是否正确,消息节后再看,希望得到想要的答案


回复

使用道具 举报

7

主题

177

回帖

198

积分

初级会员

积分
198
发表于 7 天前 | 显示全部楼层
你需求的信号频率有多高?频率要求不高的直接用 PWMI 模式就行了,不用手动配
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
发表于 6 天前 | 显示全部楼层
你的理解是对应的,不管谁先,都可以触发。
回复

使用道具 举报

1

主题

22

回帖

25

积分

新手上路

积分
25
发表于 6 天前 | 显示全部楼层
双边沿触发你的理解看上去是没有问题的,就是上升沿捕获一次,下降沿也捕获一次。
回复

使用道具 举报

1

主题

22

回帖

25

积分

新手上路

积分
25
发表于 6 天前 | 显示全部楼层
双边沿触发,你的理解基本没有问题,就是上升沿和下降沿均会产生捕获。问题是代码为啥是RISING 而不是BOTHEDGE?
回复

使用道具 举报

10

主题

25

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
Penguins 发表于 2026-4-3 22:21
你需求的信号频率有多高?频率要求不高的直接用 PWMI 模式就行了,不用手动配

我要测的信号频率100hz,他的高电平在10ms内会变化,采集高电平脉宽
回复

使用道具 举报

10

主题

25

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
zchong 发表于 2026-4-4 19:51
双边沿触发,你的理解基本没有问题,就是上升沿和下降沿均会产生捕获。问题是代码为啥是RISING 而不是BOTHE ...

抱歉上面的代码有误是我改之后的,我改之前是TIM_INPUTCHANNELPOLARITY_BOTHEDGE的,但是他进入中断之后只在下降沿的计数值有计数,在上升沿的计数没有,所以我就查关于双边沿输入捕获的资料,发现有的说双边沿触发应该是上升沿与下降沿都有之后才触发一次,而不是说上升沿进入一次中断下降沿也进入一次中断
https://www.eeworld.com.cn/mcu/hisic473608.html
回复

使用道具 举报

10

主题

25

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
http://www.openedv.com/posts/list/12644.htm
补充这个帖子说关于双边沿捕获配置先上升然后进入中端后再切换为下降沿捕获
回复

使用道具 举报

10

主题

25

回帖

55

积分

初级会员

积分
55
QQ
 楼主| 发表于 3 天前 | 显示全部楼层
https://blog.csdn.net/qq_4836101 ... 87953-null-null.142^v102^pc_search_result_base2&utm_term=stm32h7%E5%AE%9A%E6%97%B6%E5%99%A8%E5%8F%8C%E8%BE%B9%E6%B2%BF%E8%BE%93%E5%85%A5%E6%8D%95%E8%8E%B7%E6%B5%8B%E8%84%89%E5%AE%BD&spm=1018.2226.3001.4187
还有上面这个帖子关于脉宽测量用的是先用上升沿触发然后进入中断手动切换为下降沿触发,现在搜的测脉宽方式都是用先上升沿,然后再进入中断之后再改成下降沿触发,为什么不用双边沿呢?
回复

使用道具 举报

1

主题

22

回帖

25

积分

新手上路

积分
25
发表于 3 天前 来自手机 | 显示全部楼层
fhs 发表于 2026-4-7 09:14
抱歉上面的代码有误是我改之后的,我改之前是TIM_INPUTCHANNELPOLARITY_BOTHEDGE的,但是他进入中断之后 ...

按照链接文档描述,部分timer是不支持双沿触发的,这个要根据自己的具体型号去核实了
回复

使用道具 举报

7

主题

177

回帖

198

积分

初级会员

积分
198
发表于 前天 00:07 | 显示全部楼层
fhs 发表于 2026-4-7 09:02
我要测的信号频率100hz,他的高电平在10ms内会变化,采集高电平脉宽

这么低频用 PWMI 就好了,手动配麻烦
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121980
QQ
发表于 前天 08:03 | 显示全部楼层
不行就参考我们TOOL开源的APP V1.X代码吧,做了个脉冲测量,支持频率,占空比和个数测量。支持0.1Hz到500KHz

https://forum.anfulai.cn/forum.p ... &extra=page%3D1

123.png
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-4-10 13:07 , Processed in 1.395564 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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