用中断接收串口数据时,有时会存在串口接收数据错乱的问题,此时需要配置的时候为
uint8 u8Data;
if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET) {
USART_ClearITPendingBit(USART1, USART_IT_RXNE); // 实际测试,先清除后存在,效果很好
u8Data = USART_ReceiveData(USART1);
if (bUsart1ReFlag == 0) {
g_s8RxDebugBuf[u8RxDebugLength++] = u8Data;
}
if (u8RxDebugLength > 127)
/* 防止数据过多 */
{
u8RxDebugLength = 0;
} else if ((g_s8RxDebugBuf[u8RxDebugLength - 1] == 0x0a) &&
/* 结束标识 */
(g_s8RxDebugBuf[u8RxDebugLength - 2] == 0x0d)) {
bUsart1ReFlag = 1;
}
}
来源: http://www.bubuko.com/infodetail-1964972.html