stm32使用串口DMA实现数据的收发

devtools/2024/11/8 16:29:13/

前言

DMA的作用就是帮助CPU来传输数据,从而使CPU去完成更重要的任务,不浪费CPU的时间。

一、配置stm32cubeMX






这两个全添加上。参数配置一般默认即可

代码部分

只需要把上期文章里的HAL_UART_Transmit_IT(&huart2,DATE,2);

全都改为HAL_UART_Transmit_DMA(&huart2,DATE,2);即可

参数都是一样 的。

看代码

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{***** HAL_UART_Transmit_DMA(&huart2,DATE,2);*****//Contral LEDGPIO_PinState state = GPIO_PIN_SET;if(DATE[1] == '0'){state = GPIO_PIN_RESET;}else if(DATE[1] == '1'){state = GPIO_PIN_SET;}if(DATE[0] == 'B'){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,state);}else if(DATE[0] == 'R'){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,state);}else if(DATE[0] == 'G'){HAL_GPIO_WritePin(GPIOB,GPIO_PIN_6,state);}***** HAL_UART_Receive_DMA(&huart2,DATE,2);*****
}

这是他的回调函数。(*****的两行是最重要的基础部分,其他的都是附加的功能)

要注意最后一行,是重新开启了数据的接收。

因为你在main函数里只有一行HAL_UART_Receive_DMA(&huart2,DATE,2);这个代码,所以只会执行一次,也就是接收一次数据(不能把这行写在while函数里)。所以需要在这个回调函数写一次,也就是说 每次串口往外发送一次数据,都重新开启了接收的函数,我们才可以继续往里面发送内容。

最后

要记得在main主函数中使用HAL_UART_Receive_DMA(&huart2,DATE,2);跟之前是一样的,没这句话就相当于没使用函数。

来自keysking


http://www.ppmy.cn/devtools/132353.html

相关文章

微积分复习笔记 Calculus Volume 1 - 4.8 L’Hôpital’s Rule

4.8 L’Hpital’s Rule - Calculus Volume 1 | OpenStax

ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic

设计题目:海鲜自助餐厅系统的设计与实现 摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所…

Android Studio加载旧的安卓工程项目报错处理

文章目录 Invalid Gradle JDK configuration foundNDK not configuredCMake 3.10.2 was not found安装cmake适配cmake版本号 com.intellij.openapi.externalSystem.model.ExternalSystemExceptiongradle版本过低或下载不了下载gradle与依赖库超时替换gradle国内源替换Maven 仓库…

数据结构之排序补充

1. 非比较排序 上一篇文章我们罗列了数据结构中排序的八种方法。这八种方法都是需要比较才能实现的,那怎么样才可以通过非比较的方法来实现数组的排序呢?这里就提供一种非比较排序的方法。 具体的操作思路如下: 1. 先统计待比较数组arr中重…

AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。

2024-11-01,由伊利诺伊大学厄巴纳-香槟分校的研究团队创建的AIDOVECL数据集,通过AI生成的车辆图像,显著减少了手动标注工作,为自动驾驶、城市规划和环境监测等领域提供了丰富的眼水平车辆图像资源。 数据集地址:AIDOV…

el-table 表格索引不展示问题

问题:el-table,前端将dom结构传给后端,在另一个页面获取这个dom,渲染,一开始,列表样式全部挤到一起,样式错乱 若表格有初始化是隐藏的,需要事件点击显示的 则表格索引会消失 .loo…

数据结构 ——— 查找链式二叉树中值为X的节点

目录 链式二叉树示意图 手搓一个链式二叉树 查找链式二叉树中值为X的节点 链式二叉树示意图 手搓一个链式二叉树 代码演示: // 数据类型 typedef int BTDataType;// 二叉树节点的结构 typedef struct BinaryTreeNode {BTDataType data; //每个节点的数据struc…

轻型民用无人驾驶航空器安全操控------理论考试多旋翼部分笔记

官网:民用无人驾驶航空器综合管理平台 (caac.gov.cn) 说明:一是法规部分;二是多旋翼部分 本笔记全部来源于轻型民用无人驾驶航空器安全操控视频讲解平台 目录 官网:民用无人驾驶航空器综合管理平台 (caac.gov.cn) 一、轻型民用无人…