ARM技术william hill官网
直播中

yu305053463

10年用户 7经验值
擅长:可编程逻辑 MEMS/传感技术 嵌入式技术
私信 关注
[问答]

串口中断实验求助

从串口输入数据,通过中断方式接收,并且根据接收的数字决定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)

1522495332

2014-5-28 21:23:53
不知道你是怎么知道“不进入到串口中断服务函数中”?串口发送1?
举报

543095

2014-5-30 15:37:36
a=UTXH0;   这一句读取的是发送寄存器吧?
你是否确定EnableIrq和EnableSubIrq可以在中断例程里面使用?
如果你在中断例程里面又将中断打开,而且实际上没有将引起中断的数据处理掉,是不是中断一返回,马上又会重新产生中断,在中断中死循环呢?
除非是为了调试;建议不要在中断中使用延时,设计中断的缘由主要是节约反应时间,如果你都在中断里使用延时了,就严重背离了使用中断的目标了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分