OpenEdv-开源电子网

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

输入捕获实验求解

[复制链接]

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
发表于 2014-11-19 15:35:35 | 显示全部楼层 |阅读模式
5金钱
//定时器2中断服务程序  
void TIM2_IRQHandler(void)
{    
u16 tsr;
tsr=TIM2->SR;
  if((TIM2CH1_CAPTURE_STA&0X80)==0)//还未成功捕获
{
if(tsr&0X01)//溢出
{    
if(TIM2CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
{
if((TIM2CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
{
TIM2CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
TIM2CH1_CAPTURE_VAL=0XFFFF;
}else TIM2CH1_CAPTURE_STA++;
}  
}
if(tsr&0x02)//捕获1发生捕获事件
{
if(TIM2CH1_CAPTURE_STA&0X40) //捕获到一个下降沿
{  
TIM2CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次高电平脉宽
   TIM2CH1_CAPTURE_VAL=TIM2->CCR1; //获取当前的捕获值.
TIM2->CCER&=~(1<<1); //CC1P=0 设置为上升沿捕获
}else   //还未开始,第一次捕获上升沿

TIM2CH1_CAPTURE_VAL=0;
TIM2CH1_CAPTURE_STA=0X40; //标记捕获到了上升沿
TIM2->CNT=0; //计数器清空
TIM2->CCER|=1<<1; //CC1P=1 设置为下降沿捕获 
}    
}           
  }
TIM2->SR=0;//清除中断标志位    
}
麻烦大家帮忙讲解下这段代码的过程,硬是没看懂啊...
if(tsr&0x02)//捕获1发生捕获事件

if(TIM2CH1_CAPTURE_STA&0X40) //捕获到一个下降沿
{   
TIM2CH1_CAPTURE_STA|=0X80; //标记成功捕获到一次高电平脉宽
   TIM2CH1_CAPTURE_VAL=TIM2->CCR1; //获取当前的捕获值.
TIM2->CCER&=~(1<<1); //CC1P=0 设置为上升沿捕获
}else   //还未开始,第一次捕获上升沿

TIM2CH1_CAPTURE_VAL=0;
TIM2CH1_CAPTURE_STA=0X40; //标记捕获到了上升沿
TIM2->CNT=0; //计数器清空
TIM2->CCER|=1<<1; //CC1P=1 设置为下降沿捕获 
}    
}           
  }
TIM2->SR=0;//清除中断标志位    
}

是这样的,当发生上升沿捕获的时候,由于这时候TIM2CH1_CAPTURE_STA的标志位还没有被置为高位,所以进入到下一个循环。同时设置下次捕获为下降沿捕获。到再次发生捕获的时候,就可以用是否已经获得上升沿标志位来判断是否捕捉到下降沿。至此一次脉宽的采集就完成了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-11-20 00:21:53 | 显示全部楼层
思路正确啊,有啥问题?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2014-11-19
在线时间
0 小时
 楼主| 发表于 2014-12-9 11:05:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
已经解决了,谢谢回答啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 05:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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