HAL库串口空闲中断接收不定长数据并发送回串口助手

本文详细介绍了如何在STM32中利用串口3配置接收中断和空闲中断,并结合DMA实现接收不定长数据,包括Cubemx的设置和使用HAL_UARTEx_ReceiveToIdle_DMA函数以及处理DMA传输过半中断的方法。
摘要由CSDN通过智能技术生成

本文介绍STM32串口空闲中断加DMA接收不定长字符串的方法。将串口3配置接收中断使能、空闲中断使能、添加DMA通道来接收不定长数据。

cubemx配置:

使能串口三采用Asynchronnous模式

使能串口三中断

添加DMA通道

 代码

  MX_GPIO_Init();
  MX_DMA_Init();
  MX_USART3_UART_Init();
  /* USER CODE BEGIN 2 */
  HAL_UARTEx_ReceiveToIdle_DMA(&huart3,receiveData,sizeof(receiveData));
	__HAL_DMA_DISABLE_IT(&hdma_usart3_rx,DMA_IT_HT);
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart==&huart3){
	HAL_UART_Transmit_DMA(&huart3,receiveData,Size);
	HAL_UARTEx_ReceiveToIdle_DMA(&huart3,receiveData,sizeof(receiveData));
	__HAL_DMA_DISABLE_IT(&hdma_usart3_rx,DMA_IT_HT);
	}
}

使用HAL_UARTEx_ReceiveToIdle_DMA函数时,DMA的"传输过半"也会触发HAL_UARTEx_RxEventCallback回调函数,处理方法也很简单关闭"DMA传输过中断"即可,__HAL_DMA_DISABLE_IT(&hdma_usart3_rx,DMA_IT_HT)

串口助手

线上串口调试助手:波特律动 串口助手 (baud-dance.com) 

 

 好了,如果能帮到您,还请帮忙点个赞,谢谢。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值