`

【原】LPC1114只能读一次串口数据?要多次!

 
阅读更多

最初,读取串口数据这样处理:

while (1)

{

data = ReceiveByte();

switch(data)

{

case 'a':

function1()...

break;

case 'b':

...

break;

case 'c':

...

break;

default:

break;

}

}

这样写只能读取一次,随后再怎么写给串口数据,也读取不到了。

一旦进入显示状态,就陷入无限循环无法跳出。查阅LPC1114手册,寻找串口相关信息。

UART接收数据时,可以使用查询方式接收,也可以使用中断方式接收。

4-1 接收数据工作方式

查询方式

通过查询寄存器U0LSR中的位U0LSR[0]实现。只要接收到数据,U0LSR[0]位就会置位

中断方式

1、设置UART中断使能寄存器(U0IER),使U0IER[0] = 1

2、开放系统中断

如果接收FIFO中的数据达到U0LSR中设置的触发点时,便会触发中断——RDA

若接收了数据,但接收个数小于触发点,过一段时间后即发生字符超时中断——CTI

使用中断方式接收数据时,如果发生RDA中断,则循环从U0RBR中读取数据即可。如果发生了字符超时中断——CTI,可以通过U0LSR[0]来判断FIFO中是否含有有效数据。

解决方案:改用中断方式读取数据,就可以实现多次读串口操作。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics