笔记整理自B站UP主江科大自化协教程《STM32入门教程-2023持续更新中》,所用单片机也为教程推荐单片机。
DMA简介
DMA(Direct Memory Access)直接存储器存取(直接存储器访问),可以直接访问STM32内部的存储器的,包括运行内存SRAM、程序存储器Flash和寄存器等等
DMA可以提供外设(外设的数据寄存器DR:Data Register比如ADC的数据寄存器、串口的数据寄存器等)和存储器(运行内存SRAM和程序存储器Flash是存储变量数组和程序代码的地方)或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源
12个独立可配置的通道: DMA1(7个通道), DMA2(5个通道),通道就是数据转运的路径,每个通道都支持软件触发(存储器到存储器的转运)和特定的硬件触发(外设到存储器的转运)
STM32F103C8T6 DMA资源:DMA1(7个通道)
存储器映像
计算机系统的五大组成部分:运算器、控制器、存储器、输入设备和输出设备
其中运算器和控制器合在一起叫CPU,所以计算机的核心关键部分就是CPU和存储器

ROM就是只读存储器,是一种非易失性、掉电不丢失的存储器;RAM就是随机存储器,是一种易失性、掉电丢失的存储器
内核外设就是NVIC和SysTick,内核外设和其他外设不是一个厂家设计的

DMA框图
Cortex-M3内核其中包含了CPU和内核外设等等
Flash主闪存和SRAM运行内存
各个外设都可以看成是寄存器,也是一种SRAM存储器,寄存器是一种特殊的存储器,一方面CPU可以对寄存器进行读写,就像读写运行内存一样;另一方面,寄存器的每一位背后都连接了一根导线,这些导线可以用于控制外设电路的状态,比如置引脚的高低电平、导通和断开开关、切换数据选择器或者多位结合起来作为计数器、数据寄存器等等。寄存器是连接软件和硬件的桥梁,软件读写寄存器就相当于在控制硬件的执行
DMA既是总线矩阵的主动单元,可以读写各种存储器,也是AHB总线上的被动单元
CPU或者DMA直接访问Flash的话,是只可以读而不可以写的
SRAM是运行内存,可以任意读写

DMA基本结构
数据宽度:字节(Byte)、半字(HalfWord)、字(Word)
字节:8位,一次转运一个uint8_t
半字:16位,一次转运一个uint16_t
字:32位,一次转运一个uint32_t
M2M:Memory to Memory
DMA进行转运的条件
开关控制,DMA_Cmd必须使能
传输计数器必须大于0
触发源必须有触发信号
写传输计数器时,必须要先关闭DMA,再进行