串口配置
串口发送和接收的方法一般有三种:查询、中断和DMA。由于CPU的资源占用问题,一般采用中断或DMA方式来实现。HAL库的串口接收只支持接收定长数据,不定长数据的接收和发送需要自己编写函数,这里我们不定长发送用DMA空闲中断实现。
中断方式
接收回调函数:每一次接受一个数据都会进入这个接收回调函数。
发送回调函数:每一次发送一个数据都会进入这个发送回调函数。
在cubemx中设置串口的中断优先级,在主函数当中设置接收语句。然后再在回调函数当中写接收语句和发送语句。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//回调函数
{
HAL_UART_Transmit_IT(&huart1,buffer,3);
HAL_UART_Receive_IT(&huart1,buffer,3);
}
DMA方式
在开启中断的前提下,再在cubemx中开启串口一的DMA接收和DMA的发送。
代码部分直接把函数中的"IT"改为“DMA”。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//回调函数
{
HAL_UART_Transmit_DMA(