打印
[ZLG-ARM]

关于uart fifo的实验

[复制链接]
1569|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
菜鸟逛21ic|  楼主 | 2007-12-25 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void __irq IRQ_UART0 (void)
{
    uint8 i;
    
    if ((U0IIR & 0x0F) == 0x04)    
        rcv_new = 1;    // 设置接收到新的数据标志
    for (i=0; i<8; i++)
    {
        rcv_buf = U0RBR;// 读取FIFO的数据,并清除中断    
    }
    VICVectAddr = 0x00;    // 中断处理结束
}
这是2131开发板上的例程,使能8字节FIFO,请问为什么不把rcv_new = 1;和for循环括起来呢?不是当RDA数据可用时才读取数据吗?
新手迷惑ing

相关帖子

沙发
zlgarm| | 2007-12-25 17:00 | 只看该作者

回复如下:

菜鸟逛21ic;您好!
    关于您的问题作如下回答:、
    因为这个程序是一个8字节FIFO触发中断实验。也就是说接受FIFO接受到八个字节才会触发一次中断,并在中断服务函数读取FIFO里的八个数据。当然您也可以像您所说的那样,但最终运行完中断服务函数rcv_new都是置1。

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝