This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2640R2F: 串口只要接收到错误的数据,就会永久性的关闭串口接收??如何解决?

Part Number: CC2640R2F

本人用他做RS485通信,手机蓝牙发送数据给2640,2640通过RS485总线发给设备,接收也一样,接收到的数据通过蓝牙发送给手机。一次偶尔测试中,在2640正在通过串口接收RS485数据的时候我通过蓝牙让他发送数据,然后2640的串口就永远都收不到数据了!

后来查看UARTCC26XX2.c文件发现,串口接收遇到错误就会调用UARTCC26XX_readCancel函数,这个函数里面直接把串口接收和接收中断给禁用了:

/* Disable RX interrupts */
UARTIntDisable(hwAttrs->baseAddr, UART_INT_OE | UART_INT_BE | UART_INT_PE |
UART_INT_FE | UART_INT_RT | UART_INT_RX);

/* Disable RX */
HWREG(UART0_BASE + UART_O_CTL) &= ~(UART_CTL_RXE);

但是我把这两条禁用语句给删除,发现现象一样,就是只要串口接收错误数据就永远不会再接收数据。

按照正常逻辑,串口接收到错误数据也不应该影响后面正确数据的接收才对,请问应该如何修改程序呢?

谢谢~!