打印
[ZLG-ARM]

LPC2103的UART接收中断

[复制链接]
2210|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

粉丝