DMA配置参考STM32学习手册即可
/*
函数说明:DMA1的x通道初始化,可完成存储器到存储器、外设到存储器(如串口1的接收)、存储器到外设的初始化(如串口1的发送)
参数说明:
DMA1_Channe1x:DMA1第x通道(x=1....7)
CPAR:外设地址,CMAP:储存器地址
turn:传输方向,0---从外设到存储器,1从存储器到存储器
turn2:1---存储器到存储器
circ:0---不执行循环操作,1---执行
data_w:搬运一次的数据宽度,可以是8,16,32
sum:外设是否进行增量操作
使用方法:
例子如串口发送(即从外设接收到数据才能去发送,实质是存储器到外设):
DMA1_CHx_Init(DMA1_Channel4,(u32)&USART1->DR,(u32)usart_tx,1,0,0,0,8);
例如存储器到存储器
DMA1_CHx_Init(DMA1_Channel1,(u32)rx,(u32)tx,1,1,1,0,8);//存储器到存储器
例如从外设到存储器
DMA1_CHx_Init(DMA1_Channel1,(u32)&ADC1->DR,(u32)adc_read_data,0,0,0,0,16);
*/
void DMA1_CHx_Init(DMA_Channel_TypeDef * DMA1_Channelx,u32 CPAR,u32 CMAP,u8 turn,u8 turn2,u8 sum,u8 circ,u8 data_w)
{
u8 w = 0;
RCC->AHBENR|=1<<0; //DMA时钟
// DMA1_Channelx->CCR =