工具/软件:Code Composer Studio
您好!
我使用的是 TMS320F28377S launchpad。 我正在努力通过 SCI 协议接收串行数据、并将此数据用于进一步处理。
这是接收数据的函数
uint16 readChar()
{
//等待 inc 字符
while (SciaRegs.SCIFFRX.bit.RXFFST = 0){}//等待空状态
//获取字符
char tempchar = SciaRegs.SCIRXBUF.all;
返回 tempchar;
}
在 Windows 上使用 CCS 进行测试时、此函数按预期工作、即使数据流是连续的。
我的应用程序需要在 Linux 上使用连续的数据流。
有时在 Linux CTRL + A (^A - ASCII 值1)或 CTRL + B (^B - ASCII 值2)上发送时会出现问题。 这不是 Linux 代码的一部分,而是从其他地方添加的(不能阻止生成,因此必须在 MCU 中进行整流,同时接收自身)。 发生这种情况时、MCU - F28377S 会卡住、即使下一个数据序列正确、也不会继续。 我发现、MCU 卡在上述代码中 while 环路内的无限循环中。 MCU f28377s 无法读取这些字符、也无法在下一个数据序列到来时从该循环中退出。
我可以通过什么方式读取这些字符、或者通过任何方式从循环中退出并读取下一个数据。
我尝试通过切换这个来清除 RX 缓冲器... SciaRegs.SCIFFRX.bit.RXFIFORESET ...但是它不起作用。
谢谢