[ZLG-ARM] 关于uart fifo的实验

[复制链接]
 楼主| 菜鸟逛21ic 发表于 2007-12-25 15:13 | 显示全部楼层 |阅读模式
void&nbsp;__irq&nbsp;IRQ_UART0&nbsp;(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((U0IIR&nbsp;&&nbsp;0x0F)&nbsp;==&nbsp;0x04)&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_new&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置接收到新的数据标志<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i=0;&nbsp;i&lt8;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rcv_buf&nbsp;=&nbsp;U0RBR;//&nbsp;读取FIFO的数据,并清除中断&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;中断处理结束<br />}<br />这是2131开发板上的例程,使能8字节FIFO,请问为什么不把rcv_new&nbsp;=&nbsp;1;和for循环括起来呢?不是当RDA数据可用时才读取数据吗?<br />新手迷惑ing
zlgarm 发表于 2007-12-25 17:00 | 显示全部楼层

回复如下:

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

本版积分规则

1

主题

1

帖子

0

粉丝

1

主题

1

帖子

0

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