串口发送
重写fputc函数
1 | /* |
宏定义实现
1 | /* |
阻塞与非阻塞发送
阻塞发送:HAL_UART_Transmit
- 发送数据全,不会漏发
- 需要占用
cpu
非阻塞发送 :HAL_UART_Transmit_DMA
HAL_UART_Transmit_IT
- 发送需要时间,可能会漏发,可加延时
- 不占用
cpu
资源
串口接收
三种接收方式
1 | //需要先定义一个数组 pData 存放接收的数据 |
CRC校验实现数据纠正
由于接收的数据是定长的,会出现数据错位。可以利用CRC校验,当校验不通过时,直接重启接收,使得数据可以纠正过来。
1 | void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //接收完毕回调函数 |
CRC校验代码
1 | /* |