news 2026/6/10 12:55:27

[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/6/10 11:45:28

使用arthas生成火焰图

下载arthas https://arthas.aliyun.com/ #下载包 curl -O https://arthas.aliyun.com/arthas-boot.jar 挂载目录 #添加ksb-recycle挂载本地/opt/bin目录 vim docker-compose-app.yml 重启ksb-recycle服务 #重启ksb-recycle服务 docker-compose -f docker-compose-app.yml …

作者头像 李华
网站建设 2026/5/20 8:14:02

AI写教材神器来袭!低查重特性,一键生成专业教材!

编写教材的困境与AI的解决方案 在编写教材的过程中,总是能深刻感受到“慢节奏”的各类坑。尽管框架和参考资料已准备好,却总是在内容创作上遇到阻碍——某句话反复推敲半个小时,仍觉得表达不够准确;章节之间的衔接,总…

作者头像 李华
网站建设 2026/6/10 1:06:17

光伏电站气象监测仪 太阳能光伏气象站

太阳能光伏气象站 核心作用是“精准捕捉气象数据,为光伏运维、发电量预测提供可靠支撑”,直击光伏运维3大核心数据痛点!首先,解决数据不准的问题,实测这款光伏气象站精度稳得不像话,各项监测数据误差严格…

作者头像 李华
网站建设 2026/6/10 8:22:19

腾讯云高性价比GPU算力,开启AI时代

腾讯云高性价比GPU算力概述腾讯云作为国内领先的云计算服务商,提供多样化的GPU算力解决方案,覆盖从入门级训练到高性能计算的场景。其GPU实例基于NVIDIA Tesla系列显卡(如T4、V100、A100等),支持CUDA、TensorFlow、PyT…

作者头像 李华