HAL 串口使用笔记

本文探讨了STM32中使用普通串口中断及DMA接收数据的方法。通过HAL库配置串口,加入__HAL_UART_ENABLE_IT启用中断,介绍如何在中断服务中正确接收数据,避免使用HAL_UART_Receive_IT导致的问题。同时,分享了利用串口空闲中断加DMA实现不定长数据接收的技巧。

1 普通串口中断接收模式
在这里插入图片描述

cube配置串口完后 串口进入中断 手动加入 __HAL_UART_ENABLE_IT(&huart1, UART_IT_RXNE);就可以进入中断了
然后呢 ?

中断进去之后应该怎么接收数据?

直接写HAL_UART_Receive_IT(&huart1,u1rx, 6); 不行 u1rx里面没有数据

如果在while之前调用HAL_UART_Receive_IT(&huart1,u1rx, 1); 就出不来了
下面这段是主要接收数据的
if((__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE) != RESET))
{
__HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);
u1rx[u1rxcount] = huart1.Instance->RDR;

	}

在这里插入图片描述

2 串口空闲中断+DMA接收实现不定长数据接收模式
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值