DMA直接存储器存取

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 位,启动该通道。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值