建立cubeMX文件,这里只是写出重要设置如下。初级设置请看我博客其他类似保姆级文章。
打开接收中断,设置分组和级别;
生成源代码,之后进行keil中编辑。
添加一个大的接收缓冲区数组。
在main函数初始化中添加:
HAL_UARTEx_ReceiveToIdle_DMA(&huart1,RxBuff, sizeof(RxBuff));
这行代码的中文解释是:调用 `HAL_UARTEx_ReceiveToIdle_DMA` 函数,以空闲线检测(Idle Line Detection)模式通过 DMA(直接内存访问)接收数据,将数据存储到 `RxBuff` 缓冲区中,直到缓冲区满或者检测到空闲线为止。这里的 `&huart1` 是指向 UART 句柄的指针,表示使用的是 USART1 串口。`RxBuff` 是接收数据的缓冲区,`sizeof(RxBuff)` 表示缓冲区的大小。此函数的作用是非阻塞地接收数据,直到接收到空闲线信号或缓冲区已满,此时会自动停止接收,并通过回调函数处理接收到的数据。
启用DMA中断回调函数:
HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)。
回调内容为接收到什么就发送什么.即回环测试。
代码下载地址:
链接:https://pan.baidu.com/s/16Nc_yGvVWDEIO9RzjQcfow?pwd=rwfu
提取码:rwfu