news 2026/9/3 4:40:12

[STM32L5] 【STM32L562 DK试用】5、串口+DMA的妙用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[STM32L5] 【STM32L562 DK试用】5、串口+DMA的妙用

对于通信接口来说有很多种,分为串行接口和并行接口,一般是用于数据传输的,我们常用的有USART、SPI、I2C、USB、CAN这些,今天我们就来聊一聊串口。
串口作为一种广泛应用的通讯接口,以其低成本、易用性和简洁的通信线路著称,能够实现设备间的双向通信。通过单片机的串口,不仅可实现单片机之间的互联,还能通过接口芯片实现单片机与电脑、各类模块的通信,从而显著扩展单片机的应用领域,并大幅提升单片机系统的硬件性能。双向串口通信有两根通信线(发送端TX和接收端RX),并且TX与RX要交叉连接,当只需单向的数据传输时,可以只接一根通信线。
现在的单片机一般都有不止一个串口,我们看一下这次使用的STM32L562的串口分布:

可以看到这里面就有5个串口,有的变为UART,有的是USART,UART使用的是异步的通讯方式,USART则是在UART的基础上增加了时钟。
串口通讯的基本参数:
·波特率:串口通讯的速率
·起始位:标志一个数据帧的开始,且固定是低电平
·数据位:数据帧的有效载荷,1为高电平,0为低电平
·校验位: 用于数据验证,根据数据位计算而来(奇偶校验)
·停止位:用于数据帧间隔,固定为高电平
我们本次要使用的是USART1,主要原因如下:

STlink的接口连接的是PA9和PA10,对应的就是USART1;

这里需要注意,默认开启的引脚不是PA9和PA10,我们需要找到引脚修改一下,串口的默认参数是115200,8位,1停止位,无校验位,咱们可以柑橘需要修改;
接下来打开DMA和中断,我们这里通过串口空闲中断和DMA传输的方式进行接受,通过轮询的方式进行发送,空闲中断是在一组数据接收完成后产生的,也就是说可以接受不定长的数据,其他时候不触发中断,这个时候可以有效实现系统资源的优化利用。
接下来我们看一下软件方面的配置,首先是初始化阶段,要使能空闲中断:

复制

  1. __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
  2. HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx_buffer,200);


接下来就是在中断服务函数中处理了:

复制

  1. void USART1_IRQHandler(void)
  2. {
  3. /* USER CODE BEGIN USART1_IRQn 0 */
  4. IDLE_flag =__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE);
  5. if((IDLE_flag != RESET))
  6. {
  7. __HAL_UART_CLEAR_IDLEFLAG(&huart1);
  8. HAL_UART_DMAStop(&huart1);
  9. __HAL_UART_DISABLE_IT(&huart1, UART_IT_IDLE);
  10. uint16_t rx_length = sizeof(rx_buffer) - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);
  11. HAL_UART_Transmit(&huart1, (uint8_t *)&rx_length, 1, 0xFFFF);
  12. __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
  13. HAL_UARTEx_ReceiveToIdle_DMA(&huart1,rx_buffer,200);
  14. }
  15. /* USER CODE END USART1_IRQn 0 */
  16. HAL_UART_IRQHandler(&huart1);
  17. /* USER CODE BEGIN USART1_IRQn 1 */
  18. /* USER CODE END USART1_IRQn 1 */
  19. }


注意空闲中断没有中断回调函数,我们只能在中断中直接处理,实现的基本功能是收到不定长的数据后,返回长度,效果如下:

---------------------
作者:Bymyself
链接:https://bbs.21ic.com/forum.php?mod=viewthread&tid=3440878
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 21:38:31

【珍藏】大模型RAG技术全景图:从朴素到智能体,8大策略详解+学习资源包

朴素 RAG 仅基于查询向量与存储向量之间的相似度检索文档。 适用于简单、以事实为主的查询,只需直接语义匹配即可。多模态 RAG 可处理文本、图像、音频等多种数据类型,通过跨模态嵌入与检索完成。 适合跨模态检索任务,例如用文本查询同时获得…

作者头像 李华
网站建设 2026/9/2 21:38:31

技术解析 | 从 DAB 到 5G 广播:全球五大数字广播标准硬核技术全解(二)

摘要不止是参数对比。本文深挖 DAB、DRM、CDR 等五大标准的物理层架构差异,并针对 2026 年 5G 广播融合与中国DRM 落地等关键变局进行技术解读。第二章 核心技术架构的深度解构尽管五大标准在起源上各不相同,但为了对抗无线信道的物理特性,它…

作者头像 李华
网站建设 2026/9/3 1:03:03

CnOpenData 中国历史文化名村名单

不可移动文物是先民在历史、文化、建筑、艺术方面创作的遗产或遗址,包含古建筑物、传统聚落、古市街,考古遗址及其他历史文化遗迹,涵盖政治、军事、宗教、祭祀、居住、生活、娱乐、劳动、社会、经济、教育等多方面领域。不可移动文物数据收录…

作者头像 李华
网站建设 2026/9/2 20:40:15

CnOpenData 中国历史文化街区名单

不可移动文物是先民在历史、文化、建筑、艺术方面创作的遗产或遗址,包含古建筑物、传统聚落、古市街,考古遗址及其他历史文化遗迹,涵盖政治、军事、宗教、祭祀、居住、生活、娱乐、劳动、社会、经济、教育等多方面领域。不可移动文物数据收录…

作者头像 李华