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

前言

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.xdnf.cn/news/2838.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

服务器数据恢复—RAID5阵列硬盘坏道掉线导致存储不可用的数据恢复案例

服务器存储数据恢复环境: 一台EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。上层划分了4个卷,采用VMFS文件系统,存放虚拟机文件。 服务器存储故障: 存储RAID5阵列中磁盘出现故障,有2块硬盘对应的指示灯亮黄灯…

深度学习之学习率

1 学习率 1.1 学习率的作用 ​ 在机器学习中,监督式学习通过定义一个模型,并根据训练集上的数据估计最优参数。梯度下降法是一个广泛被用来最小化模型误差的参数优化算法。梯度下降法通过多次迭代,并在每一步中最小化成本函数(c…

HashMap 源码分析

HashMap 源码分析 1. 前置知识 1.1 什么是 Map 在实际需求中,我们常常会遇到这样的问题:在诸多数据中,通过其编号来寻找某些信息,从而进行查看或修改,例如通过学号查询学生信息。今天我们所介绍的 Map 集合就可以很…

Python毕业设计选题:基于django+vue的4S店客户管理系统

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 员工信息管理 个人中心 车辆信息管理 售后服务管理 售后安排管理 车辆信…

Vagrant使用教程:创建CentOS 8虚拟机

目录 简介准备工作下载配置Vagrant修改环境变量创建VAGRANT_HOME环境变量修改virturalBox新建虚拟机文件的默认生成路径修改Vagrant配置支持VirtualBox7.1.x版本创建Vagrant文件添加镜像 初始化并开机初始化开发环境开机 其他配置项宿主机的交换目录修改虚拟机内存修改 访问方式…

2024/11/4 数据结构大题打卡

邻接矩阵定义: typedef struct{char vex[N];int weight[N][N];int vexnum,arcnum; }MGraph; 邻接链表定义: #difine N 8typedef struct ArcNode{int vexIndex;int weight;struct ArcNode *next; }ArcNode; typedef struct VNode{char data;ArcNode *…

能详细的说明单片机的原理及其设计方法吗?如何快速的学会单片机这门技术?

单片机(Microcontroller Unit,简称 MCU)是一种将中央处理器(CPU)、存储器、输入输出接口等集成在一块芯片上的微型计算机系统。 **单片机的工作原理**: 单片机通过内部的时钟信号来同步各个部件的工作。程…

第一篇 硬件篇1[学习-来自 正点原子]

在电路设计中,TVS(瞬态电压抑制器)是一种有效的保护元件,可以用来防止瞬时过电压对芯片和其他敏感器件造成损坏。 STM32F103RCT6作为MCU 一键下载电路的具体实现过程: 首先, mcuisp控制 DTR输出低电平&…

最基础版编译运行Java(纯小白)

流程图: ⚠ 需要先安装JDK (Java Development Kit) 1. 写文件 首先写好自己的“文件”,可以用Sublime Text等文本编辑器写,还可以直接新建文本文档写一个.txt文件。 以编写一个HelloWorld程序为例: public class HelloWorld{p…

k8s 上如何跑 Dolphins 模型

接着上一篇的介绍,这一篇就来跑跑 Dolphins 模型,本篇会记录,跑模型常见的阬点。 1 在 k8s 上创建 pod 将外部数据挂载在 pod 里,并申请 gpu 资源。同时修改代码里对应的引入数据的路径 # dolphins.yaml apiVersion: v1 kind: …

大数据-206 数据挖掘 机器学习理论 - 多元线性回归 回归算法实现 算法评估指标

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【Effective C++】阅读笔记4

1. 确保公有继承中有is-a的关系 Is-a关系理解 该关系就是派生类应该具备基类的所有特性,并且可以替代基类对象使用,例如猫和狗都是动物的派生类,因为猫和狗都和动物形成了is-a关系,猫和狗都是动物。 在该关系下,派生类…

嵌入式实验2--数码管显示(基础+进阶)

一、数码管显示 0.想实现效果: 数码管交替或同时显示数字 1.电路设计 使用proteus 设计电路 1.1 STM32最小系统 搭建STM32工作基础条件 1.2 数码管电路 1.2.1 数码管 a.共阴极 abg dp都是led灯,这些led灯的公共端接地,就是共阴极&…

【LeetCode:633. 平方数之和 + 双指针】

在这里插入代码片 🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕…

SpringCloud-Eureka注册中心

假如我们的服务提供者user-service部署了多个实例,如图: 大家思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口?有多个user-service实例地址,order-service调用…

5. 推导仿真

5.1 DCDC电源(以buck电路为例)相关公式推导计算-电感 (1)计算电感的饱和电流和 电感的感值 三角号I:纹波电流 饱和电流:有条件

MySQL rand()函数、rand(n)、生成不重复随机数

文章目录 一、rand()与rand(n)二、rand()使用示例2.1、rand()与order by/group by使用随机排序分组2.2、round()与rand()的组合使用2.3、rand与ceiling的组合使用2.4、rand与floor组合使用2.5、rand与md5组合使用 三、总结3.1、rand()与rand(n)的区别 有时候我们想要生成一个唯…

告别局域网限制!轻松远程访问本地Paperless-ngx文档管理系统远程办公

前言:本文主要介绍如何在Linux系统本地Docker部署Paperless-ngx开源文档管理系统,并结合cpolar内网穿透工具解决本地部署后因为没有公网IP受到局域网访问限制,在异地也能随时远程访问的困扰。 Paperless-ngx是一个开源的文档管理系统&#x…

koa项目实战 == 实现注册登录鉴权

一. 项目的初始化 1 npm 初始化 npm init -y生成package.json文件: 记录项目的依赖 2 git 初始化 git init生成’.git’隐藏文件夹, git 的本地仓库 3 创建 ReadMe 文件 二. 搭建项目 1 安装 Koa 框架 npm install koa2 编写最基本的 app 创建src/main.js const Koa…

中烟创新:以AI审核平台助力烟草行业高效发展

企业对于高效、准确且标准化的文档审核流程需求日益迫切。传统的人工审核方式,不仅耗时费力,而且易受个人主观因素影响,导致审核标准难以统一,影响了工作效率与审核质量。北京中烟创新科技有限公司(简称:“…