news 2026/4/2 2:27:16

[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/27 7:11:39

新手也能上手 AI论文写作软件,千笔ai写作 VS WPS AI,本科生专属推荐!

随着人工智能技术的迅猛迭代与普及,AI辅助写作工具已逐步渗透到高校学术写作场景中,成为本科生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生,开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时,市场…

作者头像 李华
网站建设 2026/3/30 3:32:36

【工具】DB Browser for SQLite使用教程

DB Browser for SQLite 完全入门教程(2026) DB Browser for SQLite(简称 DB4S)是目前最受欢迎的 SQLite 图形化管理工具。它完全免费、开源、界面简洁,非常适合初学者、Android/iOS 逆向工程师,以及 Pytho…

作者头像 李华
网站建设 2026/4/2 0:40:22

【小程序毕设全套源码+文档】基于Android的智慧社区互助平台的设计与实现(丰富项目+远程调试+讲解+定制)

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

作者头像 李华
网站建设 2026/3/25 2:50:42

AI教材编写利器来袭!一键生成低查重教材,让写作不再困难

梳理教材中的知识点实属“精细工作”,其难度在于如何保持平衡和衔接。我们常常面临核心知识点缺失的担忧,同时又心头挂念着难度适配的问题——小学教材往往过于深奥,让学生难以理解;而高中教材有时又显得浅显,缺乏必要…

作者头像 李华
网站建设 2026/3/27 17:29:30

跨模态对齐技术基础与CLIP-Hive原理

跨模态对齐旨在打破文本、图像、音频等模态的壁垒,实现语义层面的统一映射。CLIP-Hive作为新一代工具,基于OpenAI的CLIP模型演进而来,核心采用对比学习机制:通过双编码器架构(图像/文本编码器),…

作者头像 李华