OpenEdv-开源电子网

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

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

[复制链接]

10

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2016-7-12
在线时间
35 小时
发表于 2017-6-23 14:33:13 | 显示全部楼层 |阅读模式
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-23 14:45:35 | 显示全部楼层
我用的是F4 探索者的板子,不小心发F1专区了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-26 01:05:12 | 显示全部楼层
对比我们例程
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 18:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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