d外貌协会主席; 发表于 2015-1-20 19:39:12

STM32f103zet6 ADC测量范围不对

使用ADC1 通道11的测量0-3.3v 当输入电压到70mv时测量到的电压显示3.3V

请问这个是配置问题还是什么问题?


源码:
#include "ADC.h"
ADC_InitTypeDefADC_InitStructure;
void ADCInit(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AIN;
//        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOC,&GPIO_InitStructure);
}

void ADC_ChannelConfig(void)
{
        ADC_InitStructure.ADC_Mode= ADC_Mode_Independent;
        ADC_InitStructure.ADC_ScanConvMode=DISABLE;   
        ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;   
        ADC_InitStructure.ADC_ExternalTrigConv= ADC_ExternalTrigConv_None;
        ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
        ADC_InitStructure.ADC_NbrOfChannel=1;
        ADC_Init(ADC1,&ADC_InitStructure);
        ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1,ADC_SampleTime_1Cycles5);
        ADC_Cmd(ADC1,ENABLE);         
        ADC_SoftwareStartConvCmd(ADC1,ENABLE);
}

u16 READAdc(void)
{
        u16 adc;
        while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
        adc=ADC_GetConversionValue(ADC1);
        return adc;
}


d外貌协会主席; 发表于 2015-1-20 20:11:49

自己顶一下

拼命三郎 发表于 2015-1-21 08:18:56

ADC是软件启动的?那么第二次采集的时候是如何启动的?
页: [1]
查看完整版本: STM32f103zet6 ADC测量范围不对