OpenEdv-开源电子网

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

输入捕获这里不懂啊,求助SOS

[复制链接]

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
发表于 2014-2-20 23:19:47 | 显示全部楼层 |阅读模式
什么高电平持续时间久了要标记成功捕捉到一次呢?
桌面.png
一代龙影-KPL
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-20 23:37:39 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-10-15
在线时间
0 小时
发表于 2014-2-21 00:13:39 | 显示全部楼层
因为如果高电平的时间太长寄存器里的值就会溢出,不标记的话最长的捕获宽度就只有65535us,为了尽可能地捕获更长时间的高电平,就需要做溢出标记,当高电平的时间较长的时候,只需要把溢出的次数x65535us+寄存器的当前值,就能算出高电平的时间,也就是main.c里的这段
if(TIM2CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿
{
temp=TIM2CH1_CAPTURE_STA&0X3F;
temp*=65536;//溢出时间总和
temp+=TIM2CH1_CAPTURE_VAL;//得到总的高电平时间
原子哥在这里巧妙地把标志变量的低6位作为溢出次数的计数器,既拉长了捕获宽度又丝毫不耗费更多的资源!
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2014-2-21 10:40:43 | 显示全部楼层
不强制性捕捉一次的话  就耗在那里了
学无止境
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-21 11:19:42 | 显示全部楼层
恩恩 谢谢哦
一代龙影-KPL
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-21 11:47:25 | 显示全部楼层
回复【3楼】江南雨絮:
---------------------------------
那如果高电平的时间长了就设置为成功捕获,就直接进入主函数打印出时间了,岂不是测不出正确的时间了?
一代龙影-KPL
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-21 11:47:35 | 显示全部楼层
回复【4楼】jermy_z:
---------------------------------
那如果高电平的时间长了就设置为成功捕获,就直接进入主函数打印出时间了,岂不是测不出正确的时间了?
一代龙影-KPL
回复 支持 反对

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13118
金钱
13118
注册时间
2012-11-26
在线时间
3813 小时
发表于 2014-2-21 12:23:15 | 显示全部楼层
回复【7楼】DDL-龙:

回复【4楼】jermy_z:
---------------------------------
那如果高电平的时间长了就设置为成功捕获,就直接进入主函数打印出时间了,岂不是测不出正确的时间了?

---------------------------------
有个参数是记录溢出次数的  当然这里溢出次数也有最大值  如果超过最大值就不准确了  但是小于这个最大值都是准确的

有个STA的参数  你仔细看看
学无止境
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2013-10-15
在线时间
0 小时
发表于 2014-2-21 12:59:05 | 显示全部楼层
回复【6楼】DDL-龙:
---------------------------------
你仔细看这段代码
if((TIM2CH3_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
{
TIM2CH3_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM2CH3_CAPTURE_VAL=0XFFFF;
}else TIM2CH3_CAPTURE_STA++;
并不是溢出就会标记成功捕获了一次,而是TIM2CH3_CAPTURE_STA自加一,什么时候才会标记呢——“高电平太长了”说明高电平的时间超过了量程,通过if((TIM2CH3_CAPTURE_STA&0X3F)==0X3F)来判断,TIM2CH3_CAPTURE_STA的低六位都填满了,连用来记录溢出次数的值都快要溢出了,就只能标记成功捕获一次了,至于实际的高电平时间,就没有参考的价值,只能知道比打印出来的值大
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-21 14:08:55 | 显示全部楼层
回复【8楼】jermy_z:
---------------------------------
也就是说高于溢出时间就不准确了?
一代龙影-KPL
回复 支持 反对

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-2-19
在线时间
0 小时
 楼主| 发表于 2014-2-21 14:09:51 | 显示全部楼层
回复【9楼】江南雨絮:
---------------------------------
恩恩  懂了 谢谢哦
一代龙影-KPL
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 05:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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