串口配置
串口发送和接收的方法一般有三种:查询、中断和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(&

本文介绍了串口通信中中断和DMA方式的应用,特别是如何实现不定长数据的接收,以及窗口看门狗的工作原理和代码实现,包括计数器配置、窗口值设置和中断回调函数的使用。
最低0.47元/天 解锁文章
1060

被折叠的 条评论
为什么被折叠?



