OpenEdv-开源电子网

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

TIM5CH1_CAPTURE_STA=0 这一句把TIM5CH1_CAPTURE_STA赋0了,那么在往下判断时哪一个条件也进不去啊???? 是不是还有什么

[复制链接]

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
发表于 2014-3-23 11:43:05 | 显示全部楼层 |阅读模式
问题:TIM5CH1_CAPTURE_STA=0  这一句把TIM5CH1_CAPTURE_STA赋0了,那么在往下判断时哪一个条件也进不去啊????
是不是还有什么语句是让
TIM5CH1_CAPTURE_STA获得值的,但没找到啊????

//捕获状态
//[7]:0,没有成功的捕获;1,成功捕获到一次.
//[6]:0,还没捕获到高电平;1,已经捕获到高电平了.
//[5:0]:捕获高电平后溢出的次数
u8  TIM5CH1_CAPTURE_STA=0; //输入捕获状态        <<<<<<<<<<<<<<<<<<<<<<<<这一句?这一句这一句??这一句??这一句???这一句?? ???????????   
u16 TIM5CH1_CAPTURE_VAL; //输入捕获值
//定时器5中断服务程序  
void TIM5_IRQHandler(void)
{    
u16 tsr;
tsr=TIM5->SR;
  if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
{
if(tsr&0X01)//溢出
{    
if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
{
if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
{
TIM5CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM5CH1_CAPTURE_VAL=0XFFFF;
}else TIM5CH1_CAPTURE_STA++;
}  
}
if(tsr&0x02)//捕获1发生捕获事件
{
if(TIM5CH1_CAPTURE_STA&0X40) //捕获到一个下降沿
{  
TIM5CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次高电平脉宽
   TIM5CH1_CAPTURE_VAL=TIM5->CCR1; //获取当前的捕获值.
TIM5->CCER&=~(1<<1); //CC1P=0 设置为上升沿捕获
}else   //还未开始,第一次捕获上升沿
{
TIM5CH1_CAPTURE_STA=0; //清空
TIM5CH1_CAPTURE_VAL=0;
TIM5CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿
TIM5->CNT=0; //计数器清空
TIM5->CCER|=1<<1; //CC1P=1 设置为下降沿捕获
}    
}           
  }
TIM5->SR=0;//清除中断标志位    
}
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

问题;TIM5CH1_CAPTURE_STA=0  这一句把TIM5CH1_CAPTURE_STA赋0了,那么在往下判断时哪一个条件也进不去啊????
是不是还有什么语句是让
TIM5CH1_CAPTURE_STA获得值的,但没找到啊????
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2014-10-5 16:14:24 | 显示全部楼层
回复【2楼】傻子:
---------------------------------
可以教我吗?
有深圳的大牛带我飞吗?
回复 支持 1 反对 0

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-3-23 12:23:17 | 显示全部楼层
我会了,不用了,谢谢
我会了,不用了,谢谢我会了,不用了,谢谢
回复 支持 反对

使用道具 举报

111

主题

265

帖子

0

精华

高级会员

Rank: 4

积分
740
金钱
740
注册时间
2014-3-4
在线时间
6 小时
 楼主| 发表于 2014-10-6 15:31:17 | 显示全部楼层
回复【3楼】放狼的爷们:
---------------------------------
当有上升沿来时,就进中断了,你去看中断里的  if(tsr&0x02)        只要中断来了这个在SR寄存器里会被赋值  这个if条件就能进去了
如果是第一次捕获   那么可以执行else
}else   //还未开始,第一次捕获上升沿
{
TIM5CH1_CAPTURE_STA=0; //清空
TIM5CH1_CAPTURE_VAL=0;
TIM5CH1_CAPTURE_STA|=0X40; //标记捕获到了上升沿
  TIM5->CNT=0; //计数器清空
  TIM5->CCER|=1<<1;  //CC1P=1 设置为下降沿捕获

这样你就可以看懂了吧
回复 支持 反对

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2014-11-6 14:13:46 | 显示全部楼层
回复【4楼】傻子:
---------------------------------
0x40这些是哪里来的呢?
小小蜗牛
回复 支持 反对

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2014-11-20 00:14:15 | 显示全部楼层
回复【4楼】傻子:
---------------------------------
明白了~3Q!
有深圳的大牛带我飞吗?
回复 支持 反对

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2014-11-20 00:44:06 | 显示全部楼层
回复【5楼】jiutianshenjian:
---------------------------------
问这个吗?(TIM5CH1_CAPTURE_STA&0X40)

代码是拿TIM5CH1_CAPTURE_STA和04H比较的,那就首先要知道TIM5CH1_CAPTURE_STA是什么。。其实TIM5CH1_CAPTURE_STA 是用来记录捕获状态, 【该变量类似原子哥在 usart.c里面自行定义的 USART_RX_STA 寄存器】

(其实TIM5CH1_CAPTURE_STA就是个变量,功能类似一个寄存器, 第6位是捕获到高电平标志,04H=01000000B,就是当第六位(捕获到高电平标志)为1的时候满足if的要求。

至于更加复杂的为什么TIM5CH1_CAPTURE_STA有这样的功能~~找一下那3个头文件里面对它的定义咯
有深圳的大牛带我飞吗?
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2017-7-3
在线时间
1 小时
发表于 2017-7-10 10:17:33 | 显示全部楼层
本帖最后由 好不点2 于 2017-7-10 10:18 编辑
傻子 发表于 2014-10-6 15:31
回复【3楼】放狼的爷们:
---------------------------------
当有上升沿来时,就进中断了,你去看中断里的& ...

TIM5CH1_CAPTURE_STA|=0X40;        //标记捕获到了上升沿
为什么这句是捕获到上升沿,这句不是把bit6置1了吗,置1的话不是就是说明上一次捕获到高上升沿,那这一次岂不是捕获到下降沿?
TIM5CH1_CAPTURE_STA&0X40跟这句有区别吗?
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2018-10-24
在线时间
11 小时
发表于 2019-7-13 11:16:12 | 显示全部楼层
主函数不是有?
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2019-7-17
在线时间
27 小时
发表于 2019-8-5 13:57:47 | 显示全部楼层
那我要是想捕获低电平该怎么写啊
回复 支持 反对

使用道具 举报

6

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
251
金钱
251
注册时间
2019-7-25
在线时间
57 小时
发表于 2019-8-5 14:43:51 | 显示全部楼层
a173873606 发表于 2019-8-5 13:57
那我要是想捕获低电平该怎么写啊

其实是一样的啊,只要你在第一次捕获到下降沿时标记一位,然后下一次上升沿时再标记一位就ok了
回复 支持 反对

使用道具 举报

4

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2020-7-12
在线时间
47 小时
发表于 2020-9-30 00:35:25 | 显示全部楼层
楼主这个TIM5CH1_CAPTURE_STA赋0了,那么在往下判断时哪一个条件也进不去啊????怎么理解呀?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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