news 2026/7/10 7:41:04

STM32串行通信DMA的使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32串行通信DMA的使用

STM32串行通信DMA的使用

  • 1. 配置
  • 2. 代码

1. 配置

简单说

  1. 发送端Memory地址自增打开;
  2. 发送模式Normal;
  3. 接收端地址自增关闭,这里每次接收并处理1字节;
  4. 接收模式Normal;

2. 代码

如果使用 printf 函数,需要更改发送函数;

使用函数:

HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

#ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #define GETCHAR_PROTOTYPE int __io_getchar(FILE *f) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #define GETCHAR_PROTOTYPE int fgetc(FILE *f) #endif /* __GNUC__ */ PUTCHAR_PROTOTYPE { // HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&ch, 1); return ch; } GETCHAR_PROTOTYPE { uint8_t ch = 0; // HAL_UART_Receive(&huart1,(uint8_t *)&ch, 1, 0xFFFF); HAL_UART_Receive_DMA(&huart1,(uint8_t *)&ch, 1); if (ch == '\r') { __io_putchar('\r'); ch = '\n'; } return __io_putchar(ch); }

回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if(huart->Instance == USART1) // 判断串口 { HAL_UART_Transmit(&huart1,aRxBuffer_1,1,100); // 返回数据 // HAL_UART_Receive_IT(&huart1,aRxBuffer_1,1); // 使能串口1接收中断 // Normal模式DMA传输一次就停止,必须再次开启才能收下一字节 HAL_UART_Receive_DMA(&huart1, aRxBuffer_1, 1); } }

发送接收函数

HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)

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

做一个小程序需要几步?一张图讲清楚!

做小程序,不是上来就写代码 👉需求、功能、流程先理清,后面开发、测试、上线才会更顺如果你正在了解小程序开发流程、小程序定制开发、企业小程序开发,可以先看这 10 个步骤:1、需求沟通 明确小程序定位、目标用户、核…

作者头像 李华
网站建设 2026/7/10 7:37:30

API 中转站和官方 API 有什么区别?一篇讲清开发者该怎么选

从接入成本、稳定性、支付、团队协作、模型扩展和维护成本六个维度拆解官方 API 与 API 中转站的差异。一、这个问题为什么重要 很多开发者最初会认为:既然模型来自官方,直接接入官方 API 肯定最简单。这个判断在小规模测试阶段通常没问题,但…

作者头像 李华
网站建设 2026/7/10 7:35:56

OpenCV实战:答题卡自动识别系统开发指南

1. 项目背景与核心需求答题卡自动识别系统在教育测评领域有着广泛的应用场景。传统的人工阅卷方式效率低下且容易出错,而基于计算机视觉的自动化评分方案能够显著提升批改效率。这个OpenCV实战项目将带你从零开始构建一个完整的答题卡识别与评分系统。我曾在一次校级…

作者头像 李华
网站建设 2026/7/10 7:35:05

2026年PETS5口语评分新规解析:高校教师如何用杰恩英语笔记的“答案树“算法过线

本文基于2026年PETS5口语评分新规,针对高校教师群体的学术表达习惯,提出"答案树"结构化应答模型。通过山东大学、武汉大学等高校教师的实测案例,验证该模型在应对考官追问场景下的有效性。文章包含评分权重分析、算法设计原理、训练实现步骤及效果验证数据,为CSC…

作者头像 李华