资深版主
- 积分
- 4306
- 金钱
- 4306
- 注册时间
- 2018-6-30
- 在线时间
- 808 小时
|
本帖最后由 1208 于 2019-6-13 19:56 编辑
1)串口显示6通道ADC+DMA
通过设置外设地址ADC1_DR_Address ((uint32_t)0x4001244C)
DMA内存基地址 ADC1ConvertedValue;
将数据从外设发送到内存读取
数据传输方向:DMA_DIR_PeripheralSRC;
由于开通6个通道,需要用到循环工作模式下
MYDMA_Config(DMA1_Channel1,(u32)ADC1_DR_Address,(u32)&AD_Value,6);//cndtr对应所开信道个数
要记得使能指定的ADC1的软件转换启动功能,才有数据传输
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
使能 ADC1 DMA :ADC_DMACmd(ADC1, ENABLE);
2)屏幕显示12通道ADC+DMA
通过ADC外设基地址(uint32_t)&ADC1->DR
从外设ADC发送到内存读取
数据传输方向DMA_DIR_PeripheralSRC
DMA通道的DMA缓存的大小110=10*11
ADC1ConvertedValue[10][11];
同样需要使能指定的ADC1的软件转换启动功能,才有数据传输
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
使能 ADC1 DMA :ADC_DMACmd(ADC1, ENABLE);
3)串口DMA
串口的外设地址(u32)&USART1->DR
DMA 存储器地址(u32)DMA_Rece_Buf
也是从外设模式到存储器DMA_DIR_PeripheralSRC
USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);//开启空闲中断
使能对应的通道需要看下中文参考手册
使能DMA传输:DMA_Cmd(DMA1_Channel5, ENABLE);
开启空闲中断:USART_ITConfig(USART1, USART_IT_IDLE, ENABLE);
使能串口1 DMA接收:USART_DMACmd(USART1,USART_DMAReq_Rx,ENABLE);
使能串口1:USART_Cmd(USART1, ENABLE);
串口接收中断的判断:if(USART_GetITStatus(USART1, USART_IT_IDLE) != RESET)
恢复DMA指针,等待下一次的接收:MYDMA_Enable(DMA1_Channel5);
|
|