PROTEUS仿真STM32F103C8ADC+DMA结果始终为0?

keil代码和proteus模型如图

从代码中看,配置基本正确。然而,您提到ADC+DMA的结果始终为0。这可能是由于以下原因:

    GPIO配置:请确保您已正确配置了ADC输入引脚的GPIO设置。例如,如果您使用的是ADC1的通道0,您需要配置PA0引脚为模拟输入。

    ADC时钟:确保已经打开ADC时钟。可以通过以下代码实现:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

ADC通道选择:确保您已经正确选择了ADC通道。根据您的代码,您应该选择了两个通道。以下是示例代码:

ADC_RegularChannelConfig(ADC1, ADC_Channel_X, 1, ADC_SampleTime_239Cycles5); // Replace ADC_Channel_X with the desired channel
ADC_RegularChannelConfig(ADC1, ADC_Channel_Y, 2, ADC_SampleTime_239Cycles5); // Replace ADC_Channel_Y with the desired channel

检查AD_Value数组定义:确保您已经定义了AD_Value数组,并分配了足够的空间。

uint16_t AD_Value[2]; // If you are using 2 channels

触发ADC转换:确保ADC的触发源被正确配置。例如,如果使用软件触发,应该使用以下代码:

ADC_ExternalTrigConvCmd(ADC1, DISABLE);

如果在检查上述问题后,ADC+DMA的结果仍然为0,请检查硬件连接和供电条件。另外,您可以尝试使用ADC轮询模式而不是DMA,看看是否能得到正确的ADC结果。这将有助于确定问题是否出在DMA部分。

温馨提示:答案为网友推荐,仅供参考
相似回答