-
GD32ADC DMA连续扫描转换只能识别一个通道
stm32移植过来的程序,stm32上正常,GD32只能识别通道7,并且通道1的值随着通道7改变调试时寄存器也核对了,没发现特别的问题,现在找不到问题了,有遇到过的前辈求解#include"adc.h"#include"delay.h"#defineADC1_DR_Address((u32)0x4001244C)#include"adc.h"//volatileuint16_tADC_ConvertedValue;u16ADC_convered[2]={0,0};staticvoidADC_GPIO_CONFIG(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ADC1,ENABLE);//使能ADC1通道时钟//PA1作为模拟通道输入引脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//初始化两个GPIOGPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入引脚GPIO_Init(GPIOA,&GPIO_InitStructure);}staticvoidADC_MODE_CONFIG_(void){DMA_InitTypeDefDMA_InitInstructure;RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);DMA_DeInit(DMA1_Channel1);//复位//DMA_InitInstructure.DMA_PeripheralBaseAddr=(u32)(&(ADC1->DR));//配置外设的基址,取adc数据寄存器的地址DMA_InitInstructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;DMA_InitInstructure.DMA_MemoryBaseAddr=(u32)ADC_convered;//把DMA的数据存入数组DMA_InitInstructure.DMA_DIR=DMA_DIR_PeripheralSRC;//外设到DMADMA_InitInstructure.DMA_BufferSize=2;//2个通道DMA_InitInstructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//DMA_InitInstructure.DMA_MemoryInc=DMA_MemoryInc_Enable;DMA_InitInstructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;DMA_InitInstructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord;DMA_InitInstructure.DMA_Mode=DMA_Mode_Circular;//不断地传输,有数据就传输DMA_InitInstructure.DMA_Priority=DMA_Priority_High;//DMA优先级DMA_InitInstructure.DMA_M2M=DMA_
2023-06-29 0