此帖出自NXP MCU论坛
最新回复
这样肯定是不能判断的,我理解是,串口接收时,同时只能接收最大缓冲个数据,在这些数据没有拷贝之前,它不会接收任何数据。例如,16字节的缓冲,那么一次接收16字节数据,当你把这些数据读完事,U1LSR就被清零了,告诉你缓冲区没有数据了,你读取完缓冲中的数据的过程中,并没有收到新的数据。
U1LSR应该不是这样用的,是接收中断后,循环读取数据判断用的,读完缓冲就退出,但无法判断一帧数据是否接收完成。。。。。。switch (U1IIR & 0x0E)
{
case 0x0C: // 若为超时中断(注意此处不要加break)
case 0x04: // 若为接收中断
while ((U1LSR & 0x01) == 1) // 若U1RBR包含有效数据
Rec_Buffer[index++] = U1RBR; // 保存接收到的数据
}
复制代码
[ 本帖最后由 zhaojun_xf 于 2012-8-30 13:50 编辑 ]
详情
回复
发表于 2012-8-30 13:49
| ||
|
||
| |
个人签名我的博客
|
|
此帖出自NXP MCU论坛
点评 | ||
|
||
回复 4楼 stonerockboy 的帖子
此帖出自NXP MCU论坛
| ||
个人签名我的博客
|
||
| |
|
|
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持