[ZLG-ARM] LPC2103的UART接收中断

[复制链接]
2752|3
 楼主| luojunsu 发表于 2010-4-21 13:56 | 显示全部楼层 |阅读模式
我用LPC2103做串口通讯,中断接收。调试时能进中断,但是中断函数里的
if ((U1IIR & 0x0F) == 0x04)   这个判断一直为非,所以就直接跳到中断函数里下面的for循环执行了。
中断函数为:
void  IRQ_UART1(void)
{
uint8 i;

if ((U1IIR & 0x0F) == 0x04)   
  rce_new =1;  

for(i = 0;i<8; i++)
   rcv_buf[i] = U1RBR;  

VICVectAddr = 0x00;        //中断处理结束  
}
主要寄存器设置是这样:
    U1FCR = 0x81;      
    U1IER = 0x01;      
    IRQEnable();      
    VICIntSelect = 0x00000000;
    VICVectCntl0 = 0x20 | 0x07;
    VICVectAddr0 = (uint32)IRQ_UART1;  
    VICIntEnable = 1 << 0x07;
chuxh 发表于 2010-4-21 21:10 | 显示全部楼层
没看出来啥毛病……
MOn51 发表于 2010-4-24 16:20 | 显示全部楼层
应该:i=U1IIR & 0x0f;
            if(i & 0x04){ 。。。。 }
              if ((U1IIR & 0x0F) == 0x04)    此时不一定会等于4
juventus9554 发表于 2010-4-24 21:58 | 显示全部楼层
嗯,我也觉得是
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

1

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部