DAM简介
储存器到存储器的数据转运用软件触发;外设到存储器用硬件触发。
存储器映像
疑问:stm32存储程序的flash为什么又称为主闪存,这个闪是什么意思???
答:Flash Memory 最初由 Intel 在 1980 年代提出,其核心特点是 电可擦除(无需紫外线擦除)和 快速擦写(相比传统 EEPROM)。“Flash”一词本意是“闪光”,比喻其擦写速度极快(如闪电般瞬间完成),因此得名。
#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
int main(void)
{
delay_init(72);
USART1_Config();//串口初始化
int a=0;
int* ptr = &a;
while(1){
printf("a的地址为:%p\r\n", ptr);
}
}
*变量的地址从0x2000 0000开始*
DMA框图
DMA基本结构图
DMA请求(触发)
数据宽度与对齐
如果两站之间的数据宽度不一样,源端小于目标宽度时,在前面补0;源端大于目标宽度时,多出的高位舍弃掉。
通道配置过程
下面是配置
DMA
通道
x
的过程
(x
代表通道号
)
:
1.
在
DMA_CPARx
寄存器中设置外设寄存器的地址。发生外设数据传输请求时,这个地址将是数据传输的源或目标。
2.
在
DMA_CMARx
寄存器中设置数据存储器的地址。发生外设数据传输请求时,传输的数据将从这个地址读出或写入这个地址。
3.
在
DMA_CNDTRx
寄存器中设置要传输的数据量。在每个数据传输后,这个数值递减。
4.
在
DMA_CCRx
寄存器的
PL[1:0]
位中设置通道的优先级。
5.
在
DMA_CCRx
寄存器中设置数据传输的方向、循环模式、外设和存储器的增量模式、外设和存储器的数据宽度、传输一半产生中断或传输完成产生中断。
6.
设置
DMA_CCRx
寄存器的
ENABLE
位,启动该通道。