STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

该博客介绍了如何使用STM32 CubeMX和HAL库结合串口空闲中断及DMA来实现不定长数据的接收。主要涉及HAL_UARTEx_ReceiveToIdle_DMA函数用于启动接收,以及HAL_UARTEx_RxEventCallback中断回调函数,通过正常模式的DMA连续接收数据。在CubeMX配置中,需开启串口的空闲中断并关闭DMA中断,以确保正确处理不定长数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

1 主要函数

主要用到的函数:
HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

HAL_UARTEx_ReceiveToIdle_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
/*
@parameter1:串口句柄
@parameter2:目标缓存区
@parameter3:接收长度,这个接收长度一般设置大于我们所要的不定长数据长度
@note:此函数实现了:设置空闲中断模式、调用UART_Start_Receive_DMA函数、空闲中断使能
*/

HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)

HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
/*
@note:空闲中断回调函数
*/

2 CubeMX配置

2.1 在串口配置中添加DMA:USART_Rx

DMA_Settings

PS:这里DMA选择Normal模式,然后再回调函数HAL_UARTEx_RxEventCallback中重新调用HAL_UARTEx_ReceiveToIdle_DMA函数即可

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值