RXNE为接收缓冲器Rx非空标志,置1表明接收到了数据(1个字节),产生中断;
IDLE为空闲标志,置1表明当前数据接收完毕(1帧数据),产生中断。接收不定长信息:
例如发送0XAA 0XEE 0XCC,在接收到0XAA时候1==RXNE,它产生了3次中段去接收
而IDLE等到0XCC接收完毕后才1==IDLE。
USART_FLAG_TC是干嘛用的呢?
类似IDLE 这个TC是发送一帧数据完毕的标志。
USART_FLAG_TXE是干嘛用的呢
类似RXNE发送完毕一个字节的标志。
然后呢说说这个HAL的UART的中断流程图,为毛要回调函数,怎么和标准库不一样啊。先上个图
接收流程看图,总结几点注意下。
1.用CUBEMX配置完毕后,需要开启HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);一般这个aRxBuffer是一个byte的数组就行。
2.需要重新写void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart),并在这个里面处理接收的数据,一般是把aRxBuffer用另外的数组存起来例如FIFO数组。
3.在HAL_UART_RxCpltCallback函数结束的时候要再次开启HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);
4.这样下来应该可以了