位7 MINC:0——不执行存储器地址增量操作;1——执行存储器地址增量操作。选1。 位6 PINC:0——不执行外设地址增量操作;1——执行外设地址增量操作。选0。 选择原因:对于外设而言,用到的是串口调试,直接发送,无需增量;而对于存储器,则是一个数组形式传输,增量模式可以直接通过指针一位一位往后传输。 然后配置...
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) { RCC->AHBENR|=1<<0; //开启DMA1时钟 delay_ms(1); //等待DMA时钟稳定 DMA_CHx->CPAR=cpar; //DMA1 外设地址 DMA_CHx->CMAR=(u32)cmar;//DMA1,存储器地址 DMA1_MEM_LEN=cndtr; //保存DMA传输数据量 DMA_...
//DMA1的各通道配置//这里的传输形式是固定的,这点要根据不同的情况来修改//从存储器->外设模式/8位数据宽度/存储器增量模式//DMA_CHx:DMA通道CHx//cpar:外设地址//cmar:存储器地址//cndtr:数据传输量staticvoiduser_Dma_init(DMA_Channel_TypeDef*DMA_CHx,u32cpar,u32cmar){DMA_InitTypeDefDMA_InitStructur...
4.设置CNDTRx和读CNDTRx函数 (通道传输数据量) void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); 12 作用:前者设置DMA通道的传输数据量(DMA处于关闭状态);后...
void DMA_ADC_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);//使能DMA传输 DMA_DeInit(DMA_CHx);//将DMA的通道1寄存器重设为缺省值 DMA_InitStructure.DMA_PeripheralBaseAddr = cpar;//DMA外设ADC基地址 ...
4.设置CNDTRx和读CNDTRx函数 (通道传输数据量) void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber); uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); 12 作用:前者设置DMA通道的传输数据量(DMA处于关闭状态);后者获取当前DMA通道传输剩余数据量(DMA...
while((read=De_Usart_Queue())!=-1){ USART_DMA_BUF[num]=read; num++; if(num==USART_DMA_BUF_SIZE) break; } if(num>0){ ((DMA_Channel_TypeDef *)DMA1_Channel4)->CNDTR = num;//数量寄存器清零 DMA_Cmd(DMA1_Channel4, ENABLE); } } }...
4.设置CNDTRx和读CNDTRx函数 (通道传输数据量) voidDMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx,uint16_tDataNumber); uint16_tDMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx); 12 作用:前者设置DMA通道的传输数据量(DMA处于关闭状态);后者获取当前DMA通道传输剩余数据量(DMA处于开...
9 void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) 10 { 11 RCC->AHBENR|=1<<0; //开启DMA1时钟 12 delay_ms(5); //等待DMA时钟稳定 13 DMA_CHx->CPAR=cpar; //DMA1 外设地址 14 DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址 ...
typedef struct { __IO uint32_t CCR; //复位 __IO uint32_t CNDTR; //传输的数据量 __IO uint32_t CPAR; //外设地址 __IO uint32_t CMAR; //存储器地址 } DMA_Channel_TypeDef; 用二维数组做DMA缓冲的串口发送: 发送函数先送到指定的二维缓冲数组中; ...