STM32 DMA的使用

DMA配置:

void DMA1Config(void)
{
	//配置ADC->Memory
	DMA_InitTypeDef DMA1_InitStructure;
	
	//使能时钟
	RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
	DMA1_InitStructure.DMA_BufferSize = 1;//
	DMA1_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
	DMA1_InitStructure.DMA_M2M = DMA_M2M_Disable;//diasble
	DMA1_InitStructure.DMA_MemoryBaseAddr = (u32)&SendBuff;
	DMA1_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
	DMA1_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;//disable
	DMA1_InitStructure.DMA_Mode = DMA_Mode_Circular;//
	DMA1_InitStructure.DMA_PeripheralBaseAddr = (u32)&ADC1->DR;
	DMA1_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
	DMA1_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//DIsABLE
	DMA1_InitStructure.DMA_Priority = DMA_Priority_High;//high
	DMA_Init(DMA1_Channel1,&DMA1_InitStructure);
	DMA_Cmd(DMA1_Channel1,ENABLE);
}

1):DMA_BufferSize :保存了DMA要传输的数据大小,其单位是DMA_MemoryDataSize 或者DMA_PeripheralDataSize 。
2):DMA_DIR :DMA数据传输方向,可以选择外设到内存还是内存到外设,例如3):DMA_DIR_PeripheralSRC(内存作为目标地址),DMA_DIR_PeripheralDST(外设作为目标地址)
4):DMA_M2M :是否开启内存到内存的传输
5):DMA_MemoryBaseAddr :内存基地址,可以作为传输源或者目标地址
6):DMA_MemoryDataSize :内存的数据单元大小,可以为字节、半字节、字或者。假设前面DMA_BufferSize 为100,DMA_MemoryDataSize 为字节,那么总共传输的是100字节
7):DMA_Mode:循环模式(DMA_Mode_Circular)和正常模式(DMA_Mode_Normal只传输一次就停止)
8):DMA_PeripheralBaseAddr :外设基地址,作为传输源或者目标地址
9):DMA_Priority :DMA的优先级,只是用一个DMA时候,配备为任何优先级是没有区别的。
10)DMA_MemoryInc 或者DMA_PeripheralInc :分别为是否开启内存自增、外设自增

初始化通道:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值