OpenEdv-开源电子网

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

输入捕获检测到的高电平时间不准

[复制链接]

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-7-12
在线时间
35 小时
发表于 2017-6-23 15:07:04 | 显示全部楼层 |阅读模式
1金钱
我按自己的思路写了输入捕获实验,我用的是双边沿捕获:TIM_ICInitStruct.TIM_ICPolarity=TIM_ICPolarity_BothEdge;   
但是用LCD显示的时候发现,按一下按键,显示时间是十几秒,有时候连续几次都是十几秒,几十秒,
这肯定运行不对啊,改了半天,加了好多语句还是运行不对,不知道哪里出了问题。


u32 Pulse_Wide;// 高电平时间
u8 update;     //检测完成标志
u8 count=0;  //溢出次数   ,最高位标记检测到一次边沿
void TIM5_IRQHandler()
{
   u32 timer=0,timer1;
        
    if(TIM_GetITStatus(TIM5, TIM_IT_CC1))
        
     {
         if((count&0x80)==0)  //判断之前是否检测到了一次边沿(count最高位标记检测到了一次边沿;)
         {
             TIM_Cmd(TIM5,DISABLE );
             TIM_SetCounter(TIM5, 0);         
             TIM_Cmd(TIM5,ENABLE );
            //把变量清零
                  Pulse_Wide=0;
                  count=0;
                  update=0;
                   timer=0;
                 count=(count|0x80);//count最高位标记检测到了一次边沿;
         }
         else//如果之前检测到了一次边沿
         {               
                   timer1=TIM_GetCapture1(TIM5);//记录捕获值
                  count&=0x7F;  //记录溢出次数。
              //计算脉冲宽度
                  timer=count;
                  timer*=500000;//我设定的溢出周期是500000,即ARR的值。
                 timer+=timer1;
                  Pulse_Wide=timer;
                 timer=0;
                 count=0;
                 update=1;//标记完成检测,在主函数中清零。
         }
         
         TIM_ClearITPendingBit(TIM5, TIM_IT_CC1);//清零中断标志
}
        
if( TIM_GetITStatus(TIM5, TIM_IT_Update))
{
             if(update==0)
                { if((count&0x80)==1)   //判断是否开始检测高电平时间
                   {
                         count+=1;       //记录溢出次数
                         TIM_ClearITPendingBit(TIM5,TIM_IT_Update);//清零中断标志
                   }
                }
}
        
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-7-12
在线时间
35 小时
 楼主| 发表于 2017-6-25 22:01:49 | 显示全部楼层
找了半天,才发现初始化配置里出了错,有一段代码是复制其他程序的,有一行的配置没有改,哎,复制粘贴不改的话,会害死人啊。
回复

使用道具 举报

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-7-12
在线时间
35 小时
 楼主| 发表于 2017-6-25 22:21:24 | 显示全部楼层
现在情况是,有时候不响应,长按时不能记录更长的时间,有时输出为0us。这问题有点多呀。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-25 23:59:47 | 显示全部楼层
慢慢调试下了,多搞几天
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 10:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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