OpenEdv-开源电子网

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

大家帮我看看 是我逻辑错误吗?

[复制链接]

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
发表于 2013-12-24 18:15:11 | 显示全部楼层 |阅读模式
程序有点长 其实就是 EM4095的读卡程序 DEMOD_OUT输出信号 读卡时 DEMOD_OUT信号两个上升沿之间通过检测RDY_CLK管脚的信号脉冲个数来判断脉宽 从而得出信号是1或者是0 一般这个脉冲个数在64-128浮动 但是我程序运行出来 用定时器计数脉冲 数量远远超过这个值 如果有哪位做过 请帮忙看一下 

 void decode_125kCard()
{
  unsigned char Corrflag=0;
  unsigned char Errflag=0;
  unsigned char i;
  GPIO_ResetBits(GPIOA,GPIO_Pin_2);
   while(1)
  {
    EXTI->IMR=0x0007ffff;
    if(itflag==1)
    {
      itflag=0;
      ClkCount=0;
      EXTI->RTSR=0x0007ffff;
      TIM_Cmd(TIM3,ENABLE);
      for(i=0;i<9;i++)
      {
        while(1)
        {
          if(itflag==1)
          {
            itflag=0;
            ClkCount=TIM_GetCounter(TIM3);
            TIM_SetCounter(TIM3, 0)
            if((ClkCount>RFT20)&&(ClkCount<RFT21))
            {
              Corrflag++;
            }
            else
            {
              Errflag=1;
            }
          }
          break;
        }
        if(Errflag==1)
        {
          Errflag=0;
          Corrflag=0;
          TIM_Cmd(TIM3,DISABLE);
          TIM_SetCounter(TIM3, 0);
          break;
        }
       
      }
        if(Corrflag==9)
        {
          Corrflag=0;
          while(1)
          {
            if(itflag==1)
            {
              itflag=0;
              ClkCount=TIM_GetCounter(TIM3);
              TIM_SetCounter(TIM3, 0);
            if((ClkCount>RFT20)&&(ClkCount<RFT21))
            {
              Buffer[RevNum++]=1;
              if(RevNum==55)
              {
                TIM_Cmd(TIM3,DISABLE);
                TIM_SetCounter(TIM3, 0);
                RevNum=0;
                RevOver=1;
                break;
              }
            }
            else if((ClkCount>RFT40)&&(ClkCount<RFT41))
            {
              Buffer[RevNum++]=0;
              if(RevNum==55)
              {
                TIM_Cmd(TIM3,DISABLE);
                TIM_SetCounter(TIM3, 0);
                RevNum=0;
                RevOver=1;
                break;
              }
              Buffer[RevNum++]=1;
              if(RevNum==55)
              {
                TIM_Cmd(TIM3,DISABLE);
                TIM_SetCounter(TIM3, 0);
                 RevNum=0;
                RevOver=1;
                break;
              }
            }
            else if((ClkCount>RFT30)&&(ClkCount<RFT31))
            {
              Buffer[RevNum++]=0;
              if(RevNum==55)
              {
                TIM_Cmd(TIM3,DISABLE);
                TIM_SetCounter(TIM3, 0);
                 RevNum=0;
                RevOver=1;
                break;
              }
              while(1)
              {
                if(itflag==1)
                {
                  itflag=0;
                  ClkCount=TIM_GetCounter(TIM3);
                  TIM_SetCounter(TIM3, 0);
                  if((ClkCount>RFT30)&&(ClkCount<RFT31))
                  {
                    Buffer[RevNum++]=0;
                    if(RevNum==55)
                    {
                      TIM_Cmd(TIM3,DISABLE);
                      TIM_SetCounter(TIM3, 0);
                        RevNum=0;
                        RevOver=1;
                        break;
                     }
                    Buffer[RevNum++]=1;
                    if(RevNum==55)
                    {
                      TIM_Cmd(TIM3,DISABLE);
                      TIM_SetCounter(TIM3, 0);
                        RevNum=0;
                        RevOver=1;
                        break;
                     }
                  }
                  else if((ClkCount>RFT20)&&(ClkCount<RFT21))
                  {
                    Buffer[RevNum++]=0;
                    if(RevNum==55)
                    {
                        TIM_Cmd(TIM3,DISABLE);
                        TIM_SetCounter(TIM3, 0);
                         RevNum=0;
                        RevOver=1;
                        break;
                     }
                  }
                }
               
              }
              if(RevOver)
              {
                break;
              }
            }
            else
            {
              RevNum=0;
              TIM_Cmd(TIM3,DISABLE);
              TIM_SetCounter(TIM3, 0);
             }
            }
            if(RevOver)
            {
              RevOver=0;
              GPIO_ResetBits(GPIOA,GPIO_Pin_0);
            }
          }
        }
      }
    }
}
void EXTI3_IRQHandler(void)
{
  EXTI_ClearITPendingBit(EXTI_Line3);
  itflag=1;
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-12-25 08:36:53 | 显示全部楼层
回复【楼主位】%E8%80%81%E6%9D%BF%E4%BD%A0%E8%87%AA%E5%B7%B1%E6%9D%A5%E5%86%99:
---------------------------------
看不懂,还是仿真慢慢找问题吧,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-25 15:11:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
外部中断 怎么仿啊 老大
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-25 15:11:29 | 显示全部楼层
回复【3楼】Badu_Space:
---------------------------------
唉 真是无语 很普通的一个问题啊
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-12-21
在线时间
0 小时
 楼主| 发表于 2013-12-25 15:19:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
是不是插着jtag调试导致时序不正常?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-25 21:07:38 | 显示全部楼层
回复【6楼】老板你自己来写:
---------------------------------
那你拔了试试?

回复【4楼】老板你自己来写:
---------------------------------
没什么特殊啊,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-12 17:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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