day8 STM32数据搬运工 - DMA

news2024/11/25 2:37:26

DMA简介

DMA,全称为:Direct Memory Access,即直接存储器访问。

DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高。

 DMA功能框图和特性

  • 5个独立的可配置通道,每个通道都直接连接专用的硬件DMA请求;
  • 在同一个DMA模块上,多个请求间的优先权可以通过软件编程设置(共有四级:超高、高、中、低);
  • 独立数据 源和目标 数据区的传输宽度(字节、半字节、全字)源和目标 地址必须按数据宽度对齐;
  • 支持循环的缓冲器管理;
  • 每个通道有3个事件标志(DMA版传输、DMA传输完成和DMA传输出错);
  • 存储器和存储器间的传输;
  • 外设到存储器和存储器到外设,外设到外设间的传输;
  • 闪存、SRAM、APB、AHB外设均可作为访问的 源和目标;
  • 可编程的数据传输数目:最大为65536

STM32F0-DMA通道

 注:可修改SYSCFG_CFGR1来配置通道的映射关系。

DMA通道优先级

仲裁器根据优先级管理着通道的请求和启动外设 / 存储器的访问;

优先级管理分两个方面:

软件方面:可通过DMA_CCRX寄存器配置每个通道的优先级,优先级分为4各等级:

        最高等级;

        高优先级;

        中等优先级;

        低优先级;

硬件方面:如果2个请求有相同的软件优先级,则较低编号的通道比较高编号的通道有较高的优先权。例如:通道2优先于通道4.

STM32F0-DMA传输

DMA增量设置

  • 通过设置DMA_CCRx寄存器中的PINC和MINC标志位,外设和存储器的指针在每次传输后可以有选择的完成自动增量
  • 当设置为增量模式时,下一个要传输的地址将是签一个地址加上增量值,增量值取决于所选的数据宽度为1、2或4。

DMA循环模式

  • 循环模式用于处理循环缓冲区和连续的数据传输(如ADC的扫描模式)。在DMA_CCRx寄存器中的CIRC位用于开启这一功能。
  • 当启动了循环模式,一组的数据传输完成时,计数寄存器将会自动的被恢复成配置该通道是设置的初值,DMA操作将会继续进行。

 STM32F0-DMA中断

每一个DMA通道都可以在DMA传输过半、传输完成和传输出错时产生中断。为应用的灵活性考虑,通过设置寄存器的不同位来打开这些中断。

 注:这些标志位都在中断状态寄存器DMA_ISR中设置

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

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

相关文章

(二)掌握最基本的Linux服务器用法——Linux下简单的C/C++ 程序、项目编译

1、静态库与动态库 静态库(Static Library):静态库是编译后的库文件,其中的代码在编译时被链接到程序中,因此它会与程序一起形成一个独立的可执行文件。每个使用静态库的程序都会有自己的库的副本,这可能会导致内存浪费。常用后缀…

Mendix 基础审计模块介绍

一、前言 作为售前顾问,帮助客户选型低代码产品是日常工作。考察一家低代码产品的好坏,其中一个维度就是产品的成熟度。产品成熟度直接影响产品在使用中的稳定性和用户体验,对于新工具导入和可持续运用至关重要。 那怎么考察一个产品是否成…

Ghost-free High Dynamic Range Imaging withContext-aware Transformer

Abstract 高动态范围(HDR)去鬼算法旨在生成具有真实感细节的无鬼HDR图像。 受感受野局部性的限制,现有的基于CNN的方法在大运动和严重饱和度的情况下容易产生重影伪影和强度畸变。 本文提出了一种新的上下文感知视觉转换器(CA-VIT)用于高动态…

UNIAPP中开发企业微信小程序

概述 需求为使用uni-app开发企业微信小程序。希望可以借助现成的uni-app框架,快速开发。遇到的问题是uni-app引入jweixin-1.2.0.js提示异常: Reason: TypeError: Cannot read properties of undefined (reading ‘title’)。本文中描述了如何解决该问题&#xff0c…

Python语法基础——循环

学习目标 通过使用while循环编写重复执行的语句。遵从循环的设计策略开发循环。利用用户的确认控制循环。用哨兵值控制循环。通过使用输入重定向从文件获取大量数据而不是从键盘输入来来获取大量数据,并且使用输出重定向将输出存人文件。使用for循环来实现计数器控制…

【资料包】HDC.Together 2023精选Codelabs指南现已上线(内有活动)

今年HDC.Together 2023的Codelabs挑战系列活动如期而至,众多开发者齐聚一堂,积极参与。本次赛题中部分Codelabs已在官网上线详细操作指南,让我们与众多coders一起探索代码的独特魅力。 01 ArkTS基础知识(ArkTS) 本课程…

Spring系列六:JdbcTemplate

🦒JdbcTemplate 📕实际需求 实际需求: 如果程序员就希望使用spring框架来做项目, spring框架如何处理对数据库的操作呢? 方案1: 使用前面做项目开发的JdbcUtils类方案2: 其实spring提供了一个操作数据库(表)功能强大的类JdbcTemplate. 我们可以同ioc…

目标和——力扣494

文章目录 题目描述解法:动态规划题目描述 解法:动态规划 nt findTargetSumWays(vector<int>& nums, int target){int sum

Paper 推荐第3期|隐私集合求交 PSI 系列

前言&#xff1a; 隐语 awesome-PETs&#xff08;PETs即Privacy-Enhancing Technologies &#xff0c;隐私增强技术&#xff09;精选业内优秀论文&#xff0c;按技术类型进行整理分类&#xff0c;旨在为隐私计算领域的学习研究者提供一个高质量的学习交流社区。awesome-PETs 包…

关于vant2 组件van-dropdown-item,在IOS手机上,特定条件下无法点击问题的探讨

情景重现 先贴有问题的代码 <template><div :class"showBar ? homeContain : homeContain-nobar"><div class"contant" id"content"><van-dialog v-model"loading" :before-close"onBeforeClose" :…

css鼠标样式 cursor: pointer

cursor: none; cursor:not-allowed; 禁止选择 user-select: none; pointer-events:none;禁止触发事件, 该样式会阻止默认事件的发生&#xff0c;但鼠标样式会变成箭头

openpose姿态估计【学习笔记】

文章目录 1、人体需要检测的关键点2、Top-down方法3、Openpose3.1 姿态估计的步骤3.2 PAF&#xff08;Part Affinity Fields&#xff09;部分亲和场3.3 制作PAF标签3.4 PAF权值计算3.5 匹配方法 4、CPM&#xff08;Convolutional Pose Machines&#xff09;模型5、Openpose5.1 …

【uniapp2】获取manifest里的versionName版本号

在要展示版本号的页面中添加&#xff1a; onLoad() {// 获取本地应用资源版本号plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) > {this.innerVer wgtinfo.version;this.versionCode wgtinfo.versionCode;console.log(wgtinfo);});},打印看看获取的信息&#x…

机器学习---逻辑回归代码

1. 逻辑回归模型 import numpy as npclass LogisticRegression(object):def __init__(self, learning_rate0.1, max_iter100, seedNone):self.seed seedself.lr learning_rateself.max_iter max_iterdef fit(self, x, y):np.random.seed(self.seed)self.w np.random.normal…

视频汇聚平台EasyCVR安防监控视频汇聚平台的FLV视频流在VLC中无法播放的问题解决方案

众所周知&#xff0c;TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入&#xff0c;包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上&#xff0c;视频监控…

ESP8266获取网络时间 实时时钟

程序现象 一、用串口调试助手调试 1.发送指令ATRST重启模块使应用模式更改生效&#xff1b; 2.发送指令ATE0取消回显 3.使用串口发送指令ATCWMODE1设置模块Wi-Fi应用模式为Station模式&#xff1b; 4.发送指令ATCWJAP "ssid","pwd"连接AP&#xff1b; …

react-native-webview RN和html双向通信

rn登录后得到的token需要传递给网页&#xff0c;js获取到的浏览器信息需要传递给rn RN Index.js: import React from react import { WebView } from react-native-webview import useList from ./useListexport default function Index(props) {const { uri, jsCode, webVie…

23款奔驰S450 4MATIC升级车载冰箱系统,快乐就是这么朴实无华呀

凉爽餐饮随时触手可及。容积10升的可拆卸冷藏箱与后排扶手和谐融合。如此一来&#xff0c;即使在炎炎夏日&#xff0c;也可享受沁凉的冷饮。

Vue3头像(Avatar)

效果如下图&#xff1a;在线预览 APIs 参数说明类型默认值必传shape指定头像的形状‘circle’ | ‘square’‘circle’falsesize设置头像的大小number | ‘large’ | ‘small’ | ‘default’ | Responsive‘default’falsesrc图片类头像资源地址string‘’falsealt图片无法显…