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
PS:这里DMA选择Normal模式,然后再回调函数HAL_UARTEx_RxEventCallback
中重新调用HAL_UARTEx_ReceiveToIdle_DMA
函数即可