中断串口实验求助?

2019-07-16 09:31发布

本帖最后由 yu305053463 于 2014-4-9 15:37 编辑

从串口输入数据,通过中断方式接收,并且根据接收的数字决定LED的闪烁情况。问题:我未输入的情况下,主程序正常进行循环(已用LED测试),
一旦我从串口输入数据后,循环立即终止,而且不进入到串口中断服务函数中,请问这是为什么?
下面是部分代码:
void __irq UART0_RxInt(){        char a;      
          INTMSK=0xffffffff;                        
          a=UTXH0;               
        if(a==1)               
        {   
            GPFDAT=0;                        
            delay(1000);                        
            GPFDAT=0xff;                     
            delay(1000);               
        }              
        ClearPending(BIT_UART0);      
        ClearSubPending(BIT_SUB_RXD0);        
        EnableIrq(BIT_UART0);        
        EnableSubIrq(BIT_SUB_RXD0);
}        
void Initint()
{
        ClearPending(BIT_UART0);
       ClearPending(BIT_SUB_RXD0);      
        EnableIrq(BIT_UART0);
        EnableSubIrq(BIT_SUB_RXD0);
        pISR_UART0=(unsigned)UART0_RxInt;
}
int main()
{
        GPFCON=0x5500;        
       GPFUP=0;
        GPFDAT=0xff;
       ULCON0=0x03;
        UFCON0=0x06;
       UMCON0=0x00;   
        UCON0=0x05;   
        UBRDIV0=26;      
        InitInt();      
         while(1)  { }      
         return 0;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
yu305053463
2019-07-16 14:41
bistort 发表于 2014-4-9 10:34
好乱……本想帮你看看的……没仔细看、、、

我拷代码的时候还很正常,不知道为什么会乱了!我再给你试试
void __irq UART0_RxInt()
{        char a;        
         INTMSK=0xffffffff;                        
          a=UTXH0;               
          if(a==1)               
          {        
            GPFDAT=0;                       
            delay(1000);                       
            GPFDAT=0xff;                        
           delay(1000);               
            }               
           ClearPending(BIT_UART0);      
          ClearSubPending(BIT_SUB_RXD0);      
         EnableIrq(BIT_UART0);        
        EnableSubIrq(BIT_SUB_RXD0);}        
void InitInt()
{
           ClearPending(BIT_UART0);        
          ClearPending(BIT_SUB_RXD0);        
          EnableIrq(BIT_UART0);        
         EnableSubIrq(BIT_SUB_RXD0);        
         pISR_UART0=(unsigned)UART0_RxInt;
}


int main()
{
         GPFCON=0x5500;      
         GPFUP=0;        
         GPFDAT=0xff;      
         ULCON0=0x03;        
         UFCON0=0x06;     
         UMCON0=0x00;   //高电平触发  
         UCON0=0x05;     
         UBRDIV0=26;      
         InitInt();        
       while(1)        
       {  }        
      return 0;
}



问题是:
从串口输入数据,通过中断方式接收,并且根据接收的数字决定LED的闪烁情况。问题:我未输入的情况下,主程序正常进行循环(已用LED测试),
一旦我从串口输入数据后,循环立即终止,而且不进入到串口中断服务函数中,请问这是为什么?

一周热门 更多>