再谈STM32F103RBT6-CubeMX-HAL库-UART串口接收中断DMA回调函数代码分析

建立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

猜你喜欢

转载自blog.csdn.net/2301_81235726/article/details/136112891