OpenEdv-开源电子网

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

关于STM32F103输入捕获的一些问题

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-8-11
在线时间
6 小时
发表于 2020-8-17 11:55:10 | 显示全部楼层 |阅读模式
1、为什么已经捕获到上升沿中断了,TIM5CH1_CAPTURE_STA 的 第 6 位 还是为 0,不是应该为1吗?表示捕获到了上升沿
2、没有捕获到上升沿,怎么能捕获到上升沿中断了呢?
3、TIM5CH1_CAPTURE_STA 的 第 6 位 为 0 则表示还没有捕获到新的上升沿,在新的上升沿之前能捕获到上升沿中断吗?
4、if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET) 捕获 1 发生捕获事件
{
       if(TIM5CH1_CAPTURE _STA& 捕获到一个下降沿
}
这两行代码如何理解呢?

求前辈指导!谢谢啦

ZT2VH$CDQ[8FIE6F%ZMCE8A.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-8-17 16:20:00 | 显示全部楼层
本帖最后由 弦子的弦 于 2020-8-17 16:26 编辑

第一点,不知道你的测试情况,因为按程序运行的次序,有可能你观测点在发送中断和改变变量值的语句之间。
第二点,不成立,前后没有逻辑关系
第三点,可以,如果我没理解错你的意思,是一定是这样的。
第四点,TIM_GetITStatus(TIM5, TIM_IT_CC1) 表示读取TIM5中TIM_IT_CC1的状态,这个应该表示中断捕获通道1,然后将他的状态和RESET比较,如果不是,那么就说明有捕获中断产生, 然后进行进行下一个判断,是否捕获到一个下降沿。

输入捕获的核心逻辑其实比较简单,假设一种情况,正常状态下是低电平的IO口,每过一小段时间就会有一个高电平产生,然后又恢复到低电平,现在你需要来捕获这个高电平的时间。
- 首先,你需要配置定时器,包括它计数的范围和频率,然后配置他是上升沿触发捕获的,溢出自动重新转载,并使能触发会产生中断
程序运行的时候,当有一个上升沿产生,定时器就会将此刻的计数存放到特定的寄存器中(硬件自动完成),并产生一个中断,这个时候,你可以在中断中读取计数的值(第一次读值),并切记要改变定时器的捕获极性,也就是接下来,是下降沿捕获了。
当这个高电平结束后,肯定会产生一个下降沿,此时就有现了捕获中断,定时器又将值写入到特定计数器中(硬件自动完成),那么你就把这个值读取出来(第二读值)。
你已经读取了2个值,明显的,这2个值的差,就是高电平的时间。

这是一个简单的程序,但是他会有一点小问题,比如,如果你捕获的时间很长,定时器已经运行了多个周期了,定时器溢出就会重新计数(这个是通过软件配置成这样的),那么这样你再作差,显然不准确的,所以你可以在定时器溢出产生中断的时候,用一个变量作为标记,溢出中断多少次都记录下来。

另一个,在多PWM捕捉的时候,每一次捕获,都需要和前面一次捕获作差,来计算出高电平,或低电平的实际。所以你还需要注意另一个问题,就是这个上升沿(或下降沿),是否是第一个高电平(或低电平)产生的,如果是第一次产生,那么是不需要和前面低电平的计数作差的。我以前写过红外时序的解码相关的程序,其中就需要用到输入捕获,或许你可以参考一下:https://blog.csdn.net/qq_17351161/article/details/107437382
回复 支持 反对

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-8-11
在线时间
6 小时
 楼主| 发表于 2020-8-18 10:25:13 | 显示全部楼层
弦子的弦 发表于 2020-8-17 16:20
第一点,不知道你的测试情况,因为按程序运行的次序,有可能你观测点在发送中断和改变变量值的语句之间。
...

谢谢前辈耐心指导!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-9-21
在线时间
3 小时
发表于 2020-10-4 13:42:12 | 显示全部楼层
你好  想请教一下  我还是看不懂   捕捉到上升沿中断,与捕捉到上升沿什么关系    我理解的是有上升沿中断就有上升沿了,但代码和教程应该不是这意思   麻烦大佬帮忙解答下  感谢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-17 04:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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