【原】LPC1114读取串口读不到数据

读取串口读不到数据怎么办

我们自定义串口读取一字节数据函数

uint8_t UARTReceiveByte(void)
{
uint8_t rcvData;

while (!(LPC_UART->LSR & LSR_RDR))
{
; // 查询数据是否接收完毕
}

rcvData = LPC_UART->RBR; // 接收数据
return (rcvData);
}

为了测试串口读取数据操作有没有成功完成,我们将读取到的数据在写回串口,使其显示到终端上查看验证

int main (void) {
volatileuint8_t ch = 0;


UARTInit(115200);
LPC_UART->IER = IER_THRE | IER_RLS; // 设置中断使能寄存器

ch = UARTReceiveByte(); // 接收字符
UARTSendByte(ch); // 发送接收数据

然而终端没有显示,事实告诉我们,串口并没有读取到数据。Debug单步调试,程序执行到

while (!(LPC_UART->LSR & LSR_RDR)); // 查询数据是否接收完毕

就卡住无法向下执行,进一步证实了读取字符的失败。

解决方案:

ch = UARTReceiveByte(); // 接收字符
if (ch != 0x00)
{
UARTSendByte(ch); // 发送接收数据

添加判断语句if (ch != 0x00){} ,为了避免ch随机值我们定义了初始值0,添加此判断语句的作用一目了然,越是小细节往往越被我们忽略。

你可能感兴趣的:(读不到)