STM32自学记录(九)

devtools/2025/2/15 11:14:12/

STM32自学记录


文章目录

  • STM32自学记录
  • 前言
  • 一、DMA杂记
  • 二、实验
    • 1.学习视频
    • 2.复现代码
  • 总结


前言

DMA


一、DMA杂记

DMA(Direct Memory Access)直接存储器存取
DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省CPU的资源。
12个独立可配置的通道:DMA1(7个通道),DMA2(5个通道)
每个通道都支持软件触发和特定的硬件触发。
STM32F103C8T6 DMA资源:DMA1(7个通道)
存储器到存储器的数据转运——软件触发
外设到存储器的数据转运——硬件触发
计算机系统的5大组成部分:运算器、控制器、存储器、输入设备和输出设备。
CPU:运算器和控制器;+存储器=两大核心
存储器:存储器的内容+存储器地址
寄存器是连接软件和硬件的桥梁。
CPU或者DMA直接访问FLASH,是只可以读而不可以写的。
SARM是运行内存,可以任意读写。
数据宽度:字节Byte、半字HalfWord、字Word
8位uint8_t/16位uint16_t/32位uint32_t
数据自增–>指针、P++
DMA转运几个条件:1:开关控制,DMA_Cmd必须使能;2:传输计数器必须大于0;3:就是触发源必须有触发信号。
触发一次,转运一次,传输计数器自减一次。
写传输计数器时,必须要先关闭DMA。
ADC的扫描模式,如果不使用DMA,功能都会收到很大的限制。
中断:传输过半、传输完成、传输错误。
DMA寄存器:DMA中断状态寄存器(DMA_ISR)
DMA中断标志清除寄存器(DMA_IFCR)
DMA通道x配置寄存器(DMA_CCRx)
DMA通道x传输数量寄存器(DMA_CNDTRx)
DMA通道x外设地址寄存器(DMA_CPARx)
DMA通道x存储器地址寄存器(DMA_CMARx)
DMA寄存器映像
初始化:1:RCC开启DMA时钟;2:直接调用DMA_Init,初始化各个参数。
存储器映像:
在这里插入图片描述
DMA框图:
在这里插入图片描述
DMA基本结构图:
在这里插入图片描述
DMA请求:
在这里插入图片描述
数据宽度与对齐:
在这里插入图片描述
数据转运+DMA:
在这里插入图片描述
ADC扫描模式+DMA:
在这里插入图片描述

二、实验

1.学习视频

B站视频链接:https://www.bilibili.com/video/BV1th411z7sn?spm_id_from=333.788.videopod.episodes&vd_source=a329b5512bc531099df1a823202af19c&p=23

2.复现代码

百度网盘链接:https://pan.baidu.com/s/1T6ycZNcGiQ_amqc87qTqww
提取码:7bs1


总结

单片机只是纸老虎,只管去做就好。


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

相关文章

有哪些免费的SEO软件优化工具

随着2025年互联网的不断发展,越来越多的企业意识到在数字营销中,网站的曝光度和排名至关重要。无论是想要提高品牌知名度,还是想要通过在线销售增加收益,SEO(搜索引擎优化)都是一项不可忽视的关键策略。而要…

2025年SEO自动优化工具

随着2025年互联网的快速发展,越来越多的企业和个人意识到,拥有一个排名靠前的网站对于吸引客户、增加流量、提高转化率至关重要。而要想让自己的网站脱颖而出,获得更多曝光,最重要的一项工作就是进行SEO优化。传统的SEO优化方式通…

QML使用ChartView绘制折线图

一、工程配置 首先修改CMakeLists.txt,按下图修改: find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Widgets) PRIVATEtarget_link_libraries(appuntitledPRIVATE Qt6::QuickPRIVATE Qt6::Widgets )其次修改main.cpp,按下图修改&#xff…

【学术投稿-第四届智能电网和绿色能源国际学术会议(ICSGGE 2025)】CSS基本选择器详解:掌握基础,轻松布局网页

可线上 官网:www.icsgge.org 时间:2025年2月28-3月2日 目录 前言 一、基本选择器简介 1. 元素选择器(Type Selector) 基本语法 示例 注意事项 2. 类选择器(Class Selector) 基本语法 示例 注意…

vue3里面,事件触发一次,方法执行多次

在 Vue 3 中,如果你遇到事件触发一次但方法执行多次的情况,这通常是由于事件监听器被多次绑定导致的。以下是一些常见的原因和解决方法: 1. 重复绑定事件监听器 如果你在同一个元素上多次绑定同一个事件监听器(例如在 mounted 钩子或模板中多次添加事件),每次组件更新时…

代码随想录算法营Day38 | 62. 不同路径,63. 不同路径 II,343. 整数拆分,96. 不同的二叉搜索树

62. 不同路径 这题的限制是机器人在m x n的网格的左上角,每次只能向下走一格或者向右走一格。问到右下角有多少条不同路径。这个动态规划的初始状态是第一行和第一列的格子的值都是1,因为机器人只能向右走一格或者向下走一格,所以第一行和第…

ES面试题

准备Elasticsearch(ES)相关的面试时,了解常见的面试题及其答案是非常重要的。以下是一些典型的Elasticsearch面试题以及详细的解答,帮助你更好地准备面试。 Elasticsearch 基础概念 1. 什么是Elasticsearch? 答&…

pycharm上传github问题:rejected

我从pycharm上传项目时,遇到的问题: 以下是一些解决思路: 这个错误提示表明,你在尝试将本地代码推送到远程仓库时,远程仓库中已经包含了你本地尚未获取的更改。换句话说,远程仓库的代码比你的本地代码更新…