如题,用GD32F150C8T6这颗芯片,用PADC+DMA电压值,IO口为PA4,但是取到的值永远是第一次取到的值,不会改变。配置代码如下
GPIO配置GPIO_InitStructure.GPIO_Pin = GPIO_PIN_4 ;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC配置
void ADC_Configuration(void)
{
ADC_InitPara ADC_InitStructure;
ADC_InitStructure.ADC_Mode_Scan = ENABLE;
ADC_InitStructure.ADC_Mode_Continuous = DISABLE;
ADC_InitStructure.ADC_Trig_External = ADC_EXTERNAL_TRIGGER_MODE_NONE;
ADC_InitStructure.ADC_Data_Align = ADC_DATAALIGN_RIGHT;
ADC_InitStructure.ADC_Channel_Number = 2;
ADC_Init(&ADC_InitStructure);
/* Configure ADC regular channelx */
ADC_RegularChannel_Config(ADC_CHANNEL_4, 1, ADC_SAMPLETIME_239POINT5);
/* Enable ADC DMA */
ADC_DMA_Enable(ENABLE);
/* Enable ADC */
ADC_Enable(ENABLE);
ADC_Calibration();
/* Start ADC Software Conversion */
ADC_SoftwareStartConv_Enable(ENABLE);
}
DMA配置
void DMA_Configuration(void)
{
DMA_InitPara DMA_InitStructure;
DMA_DeInit(DMA1_CHANNEL1);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC_RDTR_Address;//设置 DMA 传输的外设基地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&AD_Value;//内存基地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PERIPHERALSRC;//设置数据传输方向
DMA_InitStructure.DMA_BufferSize = 2;//设置一次传输数据量的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PERIPHERALINC_DISABLE;//设置传输数据的时候外设地址是不变还是递增
DMA_InitStructure.DMA_MemoryInc = DMA_MEMORYINC_ENABLE;//设置传输数据时候内存地址 是否递增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PERIPHERALDATASIZE_HALFWORD;//设置外设的数据长度是为字节传输
DMA_InitStructure.DMA_MemoryDataSize = DMA_MEMORYDATASIZE_HALFWORD;//设置内存的数据长度
DMA_InitStructure.DMA_Mode = DMA_MODE_CIRCULAR;//设置 DMA 模式是否循环采集
DMA_InitStructure.DMA_Priority = DMA_PRIORITY_HIGH;//设置 DMA 通道的优先级
DMA_InitStructure.DMA_MTOM = DMA_MEMTOMEM_DISABLE;//设 置 是 否 是 存 储 器 到 存 储 器 模 式 传 输
DMA_Init(DMA1_CHANNEL1, &DMA_InitStructure);
/* Enable DMA1 channel1 */
DMA_Enable(DMA1_CHANNEL1, ENABLE);
}
请高手不吝赐教,谢谢 |