嵌入式实验---实验四 DMA传输实验

一、实验目的

1、掌握STM32F103DMA传输程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验原理

1、利用外部按键KEY1来控制DMA的传送,每按一次KEY1,DMA就传送一次数据到USART1(串口1);

2、该串口将数据输出到PC端显示出来。LED灯D1作为程序运行的指示灯。

三、实验设备和器材

电脑、Keil uVision5软件、Proteus 8 Professional软件

四、实验内容和步骤

4.1 代码开发

按照书本中实验流程在Keil中完成DMA传输实验的代码开发;

4.2 原理图设计

在Proteus中完成原理图的设计,如图5所示。

图5 DMA传输实验原理图

五、实验记录和实验结果

5.1 实验效果记录(附照片即可)

5.2 实验效果说明

按下按键KEY1,D1亮,DMA数据被传输到串口并通过计算机显示出来,DMA传输仿真效果如上图所示。

六、实验预习要求

  1. 实验前认真阅读本实验指导;
  2. 熟悉书本中相关操作及相关器件。
  3. 完成5.1和5.2内容。

七、思考题

1. DMA的功能

  1. 数据传输加速:DMA允许外部设备(如硬盘、网卡、显卡等)直接访问主内存,避免了数据通过CPU的中断处理,从而大大提高数据传输速度和系统效率。

  1. 减少CPU负担:通过DMA,数据传输的控制和管理由专门的DMA控制器来完成,减轻了CPU的负担,使CPU可以同时处理其他任务,提高系统的并发能力和响应速度。

  1. 高效处理数据:DMA能够在数据传输过程中执行连续的数据块传输,从而提高了数据处理的吞吐量,特别是在大数据传输和高速数据传输中表现更为突出。

  1. 支持多种设备:DMA技术不仅限于特定类型的设备,可以应用于各种I/O设备,如存储设备(硬盘、固态硬盘)、网络设备(网卡)、音频设备、视频设备等。

  1. 提高系统整体性能:通过降低数据传输的延迟和提高传输速度,DMA显著改善了系统的整体性能和响应能力,尤其是对于高性能计算和实时数据处理系统尤为重要。

2、使用DMA功能进行数据传输时的配置流程

  1. 选择合适的DMA通道:确定系统支持的DMA通道数量和类型。根据需要选择一个可用的DMA通道,通常在系统的硬件规格或者操作系统的文档中可以找到相关信息。

  1. 分配DMA缓冲区:DMA传输需要一个缓冲区来存储数据,这个缓冲区位于系统内存中。确保分配的DMA缓冲区足够大以容纳需要传输的数据,并且要注意内存对齐和权限等问题。

  1. 初始化DMA控制器:需要编程初始化DMA控制器,设置各种控制寄存器,以及DMA传输的方向(读或写)和传输模式(单次传输、循环传输等)。设置DMA控制器的源地址(数据来源)和目的地址(数据目的地),通常是内存地址或者I/O端口。

  1. 设置DMA传输大小:确定每次DMA传输的数据量,通常以字节为单位。配置DMA控制器的传输计数寄存器,以指定要传输的数据字节数。

  1. 启动DMA传输:当DMA控制器配置完成后,通过设置相应的启动位(如启动位或者触发位)来启动DMA传输。DMA控制器开始自动从源地址中读取数据,并将其传输到目的地址,直到传输完成或者遇到错误。

  1. 处理DMA传输结束:在DMA传输完成时,DMA控制器通常会生成一个中断或者触发一个DMA完成信号,通知CPU传输已完成。在处理中断或者检查DMA状态寄存器时,可以确认DMA传输是否成功完成或者出现了错误。

  1. 释放DMA资源:当DMA传输完成后,释放DMA控制器和相关资源,包括释放DMA通道以便其他设备或者进程使用。

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

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

相关文章

网络编程(二)TCP编程 TCP粘包问题

文章目录 一、TCP网络编程(一)流程(二)相关函数1. socket2. bind3. listen4. accept5. connect 二、收发函数(一)send函数(二)recv函数 三、TCP粘包问题(一)将…

Linux:文件描述符

文件描述符实际上就是一个小整数 0 & 1 & 2 Linux进程默认情况下会有3个缺省打开的文件描述符,分别是标准输入0, 标准输出1, 标准错误2. 0,1,2对应的物理设备一般是:键盘,显示器,显示器 所以输入输…

【因果推断python】46_估计量2

目录 连续型干预变量案例 非线性处理效果 关键思想 连续型干预变量案例 目标转换方法的另一个明显缺点是它仅适用于离散或二元处理。这是你在因果推理文献中经常看到的东西。大多数研究都是针对二元干预案例进行的,但您找不到很多关于连续干预的研究。这让我很困…

【02】区块链技术应用

区块链在金融、能源、医疗、贸易、支付结算、证券等众多领域有着广泛的应用,但是金融依旧是区块链最大且最为重要的应用领域。 1. 区块链技术在金融领域的应用 1.2 概况 自2019年以来,国家互联网信息办公室已发布八批境内区块链信息服务案例清单&#…

ppt模版免费下载网站大全

PPT是我们传达信息、分享知识、展示项目和进行商务沟通的重要工具。一个设计精美、布局合理的PPT不仅能吸引观众的注意力,还能有效提升演讲者的专业形象。PPT模版可以帮助我们高效制作出精美的PPT,下面小编就来和大家分享一些免费无需注册登录就可以直接…

【问题记录】Ubuntu提示: “E: 软件包 gcc 没有可安装候选“

Ubuntu提示: "E: 软件包 gcc 没有可安装候选" 一,问题现象二,问题原因&解决方法 一,问题现象 在虚拟机Ubuntu中进行安装gcc命令时报错:“E: 软件包 gcc 没有可安装候选”: 二,问题原因&解决方法 …

C++语法19 循环嵌套结构(for/while循环)

语法阶段已经更新到第18章了,前面的知识你都学会了吗?如果还没有学习前面的知识,请点击👉语法专栏进行学习哦! 目录 循环嵌套 训练:数字矩形 解析 参考代码 训练:星号三角形 解析 参考代码 …

[创业之路-118] :制造业企业的必备管理神器-ERP-制造业的基本方程式与ERP的发展历程,哪些企业需要ERP?

目录 一、制造业的基本方程式 1.1 基本方程式 1.2 制造的数学模型 二、ERP的发展历程 2.1 发展历程 2.2 比较 三、过往产品回顾 3.1 定货点法 3.2 时段式ERP 3.3 闭环式MRP 3.4 ERP 四、哪些企业需要ERP 4.1 概述 4.2 软件企业需要ERP吗? 一、制造业的…

房地产市场的三个背离 欧美市场混动占优,丰田押注小发动机

当前我国房地产市场二手房表现与新房表现明显背离,核心城市表现与低线城市开始背离,未来可能出现房价表现与开发投资景气表现背离。看好核心城市在政策推动下进一步释放需求推动市场结构性复苏的前景。 房地产开发景气度继续下行 2024年5月,…

【DKN: Deep Knowledge-Aware Network for News Recommendation】

DKN: Deep Knowledge-Aware Network for News Recommendation 摘要 在线新闻推荐系统旨在解决新闻信息爆炸的问题,为用户进行个性化推荐。 总体而言,新闻语言高度凝练,充满知识实体和常识。 然而,现有的方法并没有意识到这些外部…

Kubernetes容器运行时:Containerd vs Docke

容器化技术笔记 Kubernetes容器运行时:Containerd vs Docke - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this arti…

Python数据可视化:直方图、核密度估计图、箱线图、累积分布函数图

本文使用数据来源自2023年数学建模国赛C题,以附件1、附件2数据为基础,通过excel的数据透视表等功能重新汇总了一份新的数据表,从中截取了一部分数据为例用于绘制图表。绘制的图表包括一维直方图、一维核密度估计图、二维直方图、二维核密度估…

ChatGPT提效:告别CRUD

前言 随着AIGC的发展以及大语言模型的成熟,各种AI应用眼花缭乱,以至于我们看到各种新奇的应用都会产生焦虑,我有一天会不会被淘汰?且看后文分析。AIGC的发展与逐渐成熟已经是无可逆转的局势,既然我们打不过为何不加入…

chrome 录制器及性能分析工具的使用

需求背景: 对比不同VPN方案网络延迟的差异。 验证工具: chrome浏览器自带的录制器、性能插件可以完美的解决这个问题。 注意:录制的操作都在当前页面,不存在新开标签页的场景 解决方案: 使用chrome录制器&#xf…

力扣每日一题 6/20 数学+数组

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 2748.美丽下标对的数目【简单】 题目: 给你一个下标从 0 开始…

Nginx Rewrite技术

一:理解地址重写 与 地址转发的含义。二:理解 Rewrite指令 使用三:理解if指令四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能,它可以实现URL重定向功能。 一:理解地…

NodeJs 连接本地 mySql 数据库获取数据

写在前面 今天把 nodejs 连接本地数据库的坑简单的踩一下,为后续写接口做个铺垫 安装 mySql (mac举例子) 安装地址 安装完成大概这个样子,起动起来就行 安装本地数据库连接工具(navicat举例子) 安装地…

EXCEL数据导入HIVE

引言 本文将论述如何将Windows本地的excel表数据,导入到虚拟机Linux系统中的Hadoop生态中的Hive数据仓库中。 实验准备 DBeaver Hive3.1(Hadoop3.1) excel数据表 实验步骤 一、首先打开虚拟机,启动Hadoop,启动h…

Avalonia for VSCode

1、在VSCode中编辑AvaloniaUI界面,在VSCode中搜索Avalonia,并安装。如下图,可以发现Avalonia for VSCode还是预览版。 2、 创建一个Avalonia 项目。 选择项目类型 输入项目名称 选择项目所在文件夹 打开项目 3、项目架构如下图。 4、builde…

项目六 OpenStack虚拟机实例管理

任务一 理解OpenStack计算服务 1.1 •什么是Nova • Nova是OpenStack中的计算服务项目 ,计算虚拟机实例生命周期的所有活动都由 Nova 管理 。 • Nova 提供统一的计算资源 服务。 • Nova 需要下列 OpenStack 服务的 支持。 Keystone :为所有的 OpenSt…