打印

串口中断程序请教!

[复制链接]
2085|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jlgcumt|  楼主 | 2010-3-11 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jlgcumt 于 2010-3-11 16:54 编辑

我在别人的基础上改了一下串口中断程序,能进中断但收到第一个数据后,直接跳到UART0Count=0;但我发送的是正确的数据呀,怎么会跳到UART0Count=0;
(我进入中断后单步跑时发现情况是这样的,用的是LPC2292)


我发送的数据格式为两个帧头用作数据开始的判断,是abab,接着第三个字节是字节数,

void UART0_Exception (void)
{
uint8 IIRValue;
uint8 i;
IIRValue = U0IIR;
IIRValue >>= 1;      /* skip pending bit in IIR */
IIRValue &= 0x07;     /* check bit 1~3, interrupt identification */
if ( IIRValue == IIR_RDA )   /* Receive Data Available */
  {
          /* Receive Data Available */
  UART0Buf[UART0Count] = U0RBR;
  if(UART0Buf[0]==0xAB)
    {
   
   if(UART0Count>=1)
     {
       if(UART0Buf[1]!=0xAB)
       {
         UART0Count=0;
       }     
     }
   if(UART0Count>=2)
     {
       Data1size=UART0Buf[2];
          if(++UART0Count >=Data1size)
            {
              UART0Count = 0;
           UART0RxNew=1;
     for(i=0;i<=Data1size;i++)
        {
      UartRecCmd=UART0Buf;
        }   
            }
     }
   }  
  }
      VICVectAddr = 0;    /* Acknowledge Interrupt */
// return;
}

相关帖子

沙发
ShakaLeo| | 2010-3-12 09:05 | 只看该作者
貌似程序有问题,在接收两个桢头字符ab ab的时候,UART0Count没有自增,这样无论如何也收不到正确的桢头。

使用特权

评论回复
板凳
歪 歪| | 2010-3-18 00:12 | 只看该作者
用工具调试啊,先确保你的应用程序的确发出了ABAB,看程序停在哪了

下载地址:
http://download.cnet.com/ComTrac ... 6892.html?tag=mncol

感觉好别忘了给个review(评论),谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:善攻者,动于九天之上,善守者,藏于九地之下!

183

主题

733

帖子

4

粉丝