OpenEdv-开源电子网

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

关于输入捕获!

[复制链接]

10

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-10-20
在线时间
0 小时
发表于 2013-10-26 12:12:43 | 显示全部楼层 |阅读模式

//定时器2中断服务程序 
void TIM2_IRQHandler(void)
{

  if((TIM2CH1_CAPTURE_STA&0X80)==0)//还未成功捕获 
 {  
  if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
  
  {    
   if(TIM2CH1_CAPTURE_STA&0X40)//已经捕获到高电平了
   {
    
    if((TIM2CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了
    {
     TIM2CH1_CAPTURE_STA|=0X80;//标记成功捕获了一次
     TIM2CH1_CAPTURE_VAL=0XFFFF;
    }
   else
    TIM2CH1_CAPTURE_STA++;
     
   } 
  }
 if (TIM_GetITStatus(TIM2, TIM_IT_CC1) != RESET)//捕获1发生捕获事件
  { 
   if(TIM2CH1_CAPTURE_STA&0X40)  //捕获到一个下降沿   
   {      
    TIM2CH1_CAPTURE_STA|=0X80;  //标记成功捕获到一次上升沿
    TIM2CH1_CAPTURE_VAL=TIM_GetCapture1(TIM2);
       TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Rising); //CC1P=0 设置为上升沿捕获
   }else          //还未开始,第一次捕获上升沿
   {
    TIM2CH1_CAPTURE_STA=0;   //清空
    TIM2CH1_CAPTURE_VAL=0;
     TIM_SetCounter(TIM2,0);
    TIM2CH1_CAPTURE_STA|=0X40;  //标记捕获到了上升沿
       TIM_OC1PolarityConfig(TIM2,TIM_ICPolarity_Falling);  //CC1P=1 设置为下降沿捕获
   }     
  }                    
  }

    TIM_ClearITPendingBit(TIM2, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位
}
第一个if判断第8位为0,表示还未成功捕获,接着下一个if却说成功捕获一个高电平,这不自相矛盾么? 还有下面的IF“捕获1发生捕获事件”也在未能捕获成功的第一个if语句中,这不是很匪夷所思么。。。谁能详细解释下这问题。。。问了N久都没人回。。哎。。

求学不怕苦才能坚持到彼岸
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-26 14:04:27 | 显示全部楼层
回复【楼主位】爱在暖晴天:
---------------------------------
别看了吧。
自己写一个代码出来。
看不懂的情况下,最好就自己去写,让你写,你怎么写?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-10-20
在线时间
0 小时
 楼主| 发表于 2013-10-26 19:20:35 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】爱在暖晴天: --------------------------------- 别看了吧。 自己写一个代码出来。 看不懂的情况下,最好就自己去写,让你写,你怎么写?
---------------------------------
额~~~~写不出来,咋办。。上述代码我提的两个问题真把我困惑了好久。。。
求学不怕苦才能坚持到彼岸
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-26 19:43:07 | 显示全部楼层
那先搞简单点的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-10-20
在线时间
0 小时
 楼主| 发表于 2013-10-26 20:10:02 | 显示全部楼层
回复【4楼】正点原子:
那先搞简单点的。。。
---------------------------------
这不是现在急需用到这个功能么,原子大大,针对我上述那两个问题,麻烦您详细讲解下吧,多谢了
求学不怕苦才能坚持到彼岸
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-10-26 23:15:43 | 显示全部楼层
回复【5楼】爱在暖晴天:
---------------------------------
我的注释已经很详细了
论坛我已回答过好多次,还搞不懂的,直接电话我。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2013-10-20
在线时间
0 小时
 楼主| 发表于 2013-10-26 23:18:17 | 显示全部楼层
回复【6楼】正点原子:
回复【5楼】爱在暖晴天: --------------------------------- 我的注释已经很详细了 论坛我已回答过好多次,还搞不懂的,直接电话我。
---------------------------------
这么晚了,原子大大不怕我当成骚扰打电话打过去,呵呵
求学不怕苦才能坚持到彼岸
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-10-27 08:54:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
回复【楼主位】爱在暖晴天:
---------------------------------
按照原子的思路尝试自己写,到写不出来的地方就去看下原子的代码,这样写出来程序后就很容易理解原子代码的意思啦,写完之后你会发现收获很大。我就是这样做的。
有生之年,只诉温暖不言殇,花味渐浓,茶味渐醇,倾心相遇,安暖相陪。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2019-4-4
在线时间
0 小时
发表于 2019-4-4 17:36:28 | 显示全部楼层
正点原子 发表于 2013-10-26 19:43
那先搞简单点的。。。

}else          //还未开始,第一次捕获上升沿
原子哥,这句如果第一次捕获的是下降沿,那么第一次得到的数据是否会出错?
还有那个占空比为什么会从1直接到变成500?明明到2就停止自减了。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-15 16:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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