news 2026/3/11 20:33:11

[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/3/3 9:02:21

大模型应用的模型架构和核心技术原理-以DeepSeek对话助手为例分析

一、DeepSeek 对话助手简介DeepSeek是由杭州深度求索公司开发的国产AI助手。自2025年1月正式上线以来,凭借其卓越的性能、开源策略和对中文语境的深度优化,迅速成长为全球增长最快的AI工具之一。它并非一个简单的聊天机器人,而是一个能够融入…

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

低查重AI教材编写指南:工具选择与使用技巧全解析

教材格式的复杂性是每位编写者都面临的难题。比如,标题应该用什么字号,层级要怎么设置?参考文献的格式到底是依照GB/T7714,还是按照某些出版机构的特定标准?习题是选择单栏排版还是双栏排版呢?这些不同的要…

作者头像 李华
网站建设 2026/3/12 2:27:53

论文降ai率总降不下来?别慌,这套组合拳专治各种顽固AI痕迹!

最近好多同学在后台倒苦水,说论文明明是自己写的,或者已经改了好几遍,但一查降ai率还是红得刺眼。导师那边催得紧,学校的查重系统又升级了,论文降ai简直成了毕业路上的最大拦路虎。 其实呢,大家心急吃不了…

作者头像 李华
网站建设 2026/3/4 1:55:34

CnOpenData 革命文物保护利用片区分县名单

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

作者头像 李华
网站建设 2026/3/4 10:18:28

【小程序毕设源码分享】基于springboot+小程序的小学生托管管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华