使用CUBE_MX实现STM32 DMA 功能(存储器到存储器)

目录

一、使用DMA实现从存储器1发送数据到存储器2中

1.CUBE_MX配置

2.KEIL5配置


一、使用DMA实现从存储器1发送数据到存储器2中

1.CUBE_MX配置

1.在DMA选项中添加MEMORY TO MEMORY

        选择数据宽度,并确保地址递增功能打开。

2.系统时钟72MHz

3.生成代码

2.KEIL5配置

1.打开文件dma.c

#include "dma.h"/* USER CODE BEGIN 0 *//* USER CODE END 0 *//*----------------------------------------------------------------------------*/
/* Configure DMA                                                              */
/*----------------------------------------------------------------------------*//* USER CODE BEGIN 1 *//* USER CODE END 1 */
DMA_HandleTypeDef hdma_memtomem_dma1_channel1;/*** Enable DMA controller clock* Configure DMA for memory to memory transfers*   hdma_memtomem_dma1_channel1*/
void MX_DMA_Init(void)
{/* DMA controller clock enable */__HAL_RCC_DMA1_CLK_ENABLE();/* Configure DMA request hdma_memtomem_dma1_channel1 on DMA1_Channel1 */hdma_memtomem_dma1_channel1.Instance = DMA1_Channel1;hdma_memtomem_dma1_channel1.Init.Direction = DMA_MEMORY_TO_MEMORY;hdma_memtomem_dma1_channel1.Init.PeriphInc = DMA_PINC_ENABLE;hdma_memtomem_dma1_channel1.Init.MemInc = DMA_MINC_ENABLE;hdma_memtomem_dma1_channel1.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;hdma_memtomem_dma1_channel1.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;hdma_memtomem_dma1_channel1.Init.Mode = DMA_NORMAL;hdma_memtomem_dma1_channel1.Init.Priority = DMA_PRIORITY_LOW;if (HAL_DMA_Init(&hdma_memtomem_dma1_channel1) != HAL_OK){Error_Handler();}}

2.在MX_DMA_Init()函数中加入完成初始化(不要忘记了)

HAL_DMA_Init(&hdma_memtomem_dma1_channel1);

3.打开main.c文件(已经默认调用好了头文件)

4.先定义存储器1

 #define SENDBUFF_SIZE 10   const uint32_t aSRC_Const_Buffer[SENDBUFF_SIZE]= {                                                                                           0x61626364,0x65666768,0x696A6B6C,0x6D6E6F70,0x71727374,0x75767778,0x797A7B7C,0x7D7E7F80};

5.再定义储存器2

uint32_t aDST_Buffer[SENDBUFF_SIZE];

6.在main结构体中调用函数

  HAL_StatusTypeDef DMA_status ;//DMA_status     反应了传输的状态DMA_status = HAL_DMA_Start(&hdma_memtomem_dma1_channel1,(uint32_t)aSRC_Const_Buffer, (uint32_t)aDST_Buffer,SENDBUFF_SIZE);//HAL_DMA_Start  开始传送//四个参数 1.DMA通道 2.存储器1 3.存储器2 4.传输的数据大小//返回参数 传输的状态if(DMA_status == HAL_OK){//当发送成功以后,执行相应的函数}

3.传输数据检测

1.确保DMA数据传输不被打断

	/* 等待DMA传输完成 */while(__HAL_DMA_GET_FLAG(&hdma_memtomem_dma1_channel1,DMA_FLAG_TC1)==RESET){}//两个参数: 1.DMA通道   2.DMA传输标志(后面的数字代表不同的通道)//一个返回值: 1.DMA传输标志的对应状态

2.对比两个储存器中数据是否相同

uint8_t Buffercmp(const uint32_t* pBuffer,uint32_t* pBuffer1, uint16_t BufferLength)
{/* 数据长度递减 */while(BufferLength--){/* 判断两个数据源是否对应相等 */if(*pBuffer != *pBuffer1){/* 对应数据源不相等马上退出函数,并返回0 */return 0;}/* 递增两个数据源的地址指针 */pBuffer++;pBuffer1++;}/* 完成判断并且对应数据相对 */return 1;  
}    //一个返回值 : 0代表数据不相等,1代表数据相等
//桑格变量:  1.储存器1  2.储存器2  3.数据长度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/422053.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

echarts饼图内容循环播放实现

echarts饼图内容循环播放实现 效果展示思路难点代码实现 效果展示 思路 先实现普通的饼图&#xff0c;再处理数据内容&#xff1a;使用for循环延时器实现数据分割&#xff0c;数据处理好后再进行渲染。 难点 数据分割 代码实现 <template><div :class"classN…

vue3 使用swiper制作带缩略图的轮播图

效果图 实现代码 <template><div class"wrap"><!-- 主轮播图 --><swiper :style"{--swiper-navigation-color: #fff,--swiper-pagination-color: #fff,}" :modules"modules" :navigation"true" :thumbs"{ …

基于微信小程序的高校实验室管理系统的设计与实现

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的高…

“他人笑我太疯癫,我笑他人看不穿“,关于因回复慢后,被骂事件,做知识分享,不是你理所应当的索要

原文链接&#xff1a;“他人笑我太疯癫&#xff0c;我笑他人看不穿" 引言 他人笑我太疯癫&#xff0c;我笑他人看不穿 大家好&#xff0c;这里是小杜本杜&#xff0c;今天又是一篇情绪篇&#xff0c;虽然这样的事情在我这里并不是时常发生。 然而&#xff0c;这样的事…

COCOS:(飞机大战09)敌机注册碰撞事件,控制敌机的销毁

先区分要监听谁&#xff0c;子弹打到飞机上&#xff0c;飞机去播放动画&#xff0c;并完成销毁操作&#xff0c;注册碰撞事件就写在飞机上。 飞机预制体都绑定了Enemy.ts,注册事件就写到这个文件内 import { _decorator, Animation, Collider2D, Component, Contact2DType, …

postman互转 json报文变为表单报文bulk

{"age":0"username":"chengyaojin""password":"944621""createDate":"2021-01-06" }age:0 username:chengyaojin password:944621 createDate:2021-01-06json转postman的bulk工具推荐在线json与postman…

Benvista PhotoZoom Pro / Classic 9.0.2 Win/mac + Plug-in中文破解版

对数码照片放大的质量不满意&#xff1f; 使用 BenVista PhotoZoom Classic9 调整图像大小&#xff0c;并通过我们屡获殊荣的独特 S-Spline 技术获得出色的效果&#xff01; 更高质量&#xff1a;PhotoZoom Classic9 专门用于在保持质量的同时放大照片。 该软件配备了 BenVista…

C++ 在项目中使用Linux命令

一: 选择shell Linux 命令是由shell解析并转发给操作系统执行的&#xff0c;所有的shell都是从 Bourne shell&#xff08;/bin/sh&#xff09;派生的&#xff0c;Bourne shell是贝尔实验室为早期版本的Unix开发的标准shell。 每个Unix系统都需要一个版本的Bourne shell才能正…

你还在手动重复工作吗?用PowerShell让电脑为你跑腿!

嘿,朋友,你有没有遇到过这种情况?每天都要做一些重复、无聊的工作,觉得自己简直像个机器人。比如整理文件、备份数据、批量重命名……说实话,干这些事可真浪费时间!但你有没有想过,让电脑自己去搞定这些烦人的任务?这就是今天我们要聊的——PowerShell,一个能帮你轻松…

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?idKS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的&#xff0c;这引发了人们的…

LabVIEW回转马达试验系统

基于LabVIEW的回转马达试验台通过高度集成的硬件与软件配合&#xff0c;实现对回转马达的各项性能测试&#xff0c;包括空载排量、跑合试验和冲击试验等&#xff0c;以满足出厂测试的严格标准和要求。 项目背景 回转马达作为多种机械设备的核心动力源&#xff0c;其性能的可靠…

干货分享丨智造底座——AI算力池化的必要与实践

为了帮助工业企业更好地了解数据存储及管理的应用趋势&#xff0c;e-works在线学院于2022年9月23日14:00举办了以“工业数据存储及管理”为主题的线上研讨会。 趋动科技售前工程师Johny Hong受邀作主题分享&#xff0c;并与线上几千观众共同探讨了建设智造底座——AI算力池化的…

哪个牌子的护眼台灯性价比高?2024年五款性价比高护眼台灯推荐

现在不止是小孩子需要保护眼睛&#xff0c;而我们的成年人也是需要保护眼睛。因为现在上班压力大&#xff0c;下班回家加班也成了日常操作&#xff0c;每天用眼&#xff0c;对着电子产品的时间也会很久&#xff0c;眼睛会感到不舒服。回到家中&#xff0c;我们就需要一款好的护…

word文档的读入(6)

上一个方式&#xff0c;虽然能获取到标准答案和所对应的学生答案&#xff0c;但代码不够简单和优雅。这时&#xff0c;可以用另一种方式来实现&#xff1a;遍历索引。 定义 简单来说&#xff0c;enumerate()函数用来遍历一个可遍历对象中的元素&#xff0c;同时通过一个计数器…

Matlab simulink建模与仿真 第十二章(信号属性库)

参考视频&#xff1a;simulink1.1simulink简介_哔哩哔哩_bilibili 一、信号属性库中的模块概览 1、信号属性操作库 注&#xff1a;数据类型转换模块在第二章中有介绍&#xff0c;本章不再赘述&#xff1b;数据类型传播实例在本章也不进行介绍。 2、信号属性检测库 二、数据类…

构建高效入学审核系统:Spring Boot解决方案

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理大学生入学审核系统的相关信息成为必然。开…

今年白银市场的供需关系矛盾

自从2020年以来&#xff0c;白银手持连续4年都出现了供需缺口&#xff0c;预计今年的供需缺口将进一步扩大。2015年以来&#xff0c;白银总产量始终维持10亿盎司水平上下波动&#xff0c;2015~2023年的年均复合增速在0.4%&#xff0c;预计2024年的产量将下降1%。矿产银的产量从…

万字长文分享腾讯云原生微服务治理实践及企业落地建议

前言 云原生时代&#xff0c;越来越多的企业借助于微服务与容器化&#xff0c;来提升业务弹性与研发协作效率。Dubbo、Spring Cloud、Istio、Dapr 等各类微服务生态组件百家争鸣。从腾讯内部的 CL5 到 ONS、Taf 等&#xff0c;我们也在服务治理的道路上不断的研究探索&#xf…

【开源免费】基于SpringBoot+Vue.JS房产销售系统(JAVA毕业设计)

本文项目编号 T 028 &#xff0c;文末自助获取源码 \color{red}{T028&#xff0c;文末自助获取源码} T028&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 销…

『功能项目』管理器基类【38】

我们打开上一篇37单例模式框架的项目&#xff0c; 本章要做的事情是编写管理器基类 首先创建脚本&#xff1a;ManagerBase.cs using UnityEngine; public abstract class ManagerBase : MonoBehaviour{public virtual void Init() { } } public class ManagerBase<T> : …