项目需要用到ADC,使用例程读取ADC_CH0的电压,下载例程不修改直接测量,结果读出来就像跳舞一样,一会0.1一会0.5,实际万用表测量是0.4几伏,实在找不到有什么不对的地方,因为是官方例程,也没有什么可改的,调两天,实在郁闷,到最后看到有个什么AVG,理解是平均值,然后发现有两个通道的AGV初始化后面不一样,CH0设的是AdcAvcnt_2,另一个设的是AdcAvcnt_32,把它改成32,果然稳定很多,我TMD就想骂娘,你不行设那么小干什么,真服了,
static void AdcChannelConfig(void)
{
stc_adc_ch_cfg_t stcChCfg;
uint8_t au8Adc1SaSampTime[ADC1_SA_CHANNEL_COUNT] = ADC1_SA_CHANNEL_SAMPLE_TIME;
MEM_ZERO_STRUCT(stcChCfg);
stcChCfg.u32Channel = ADC1_SA_CHANNEL;
stcChCfg.u8Sequence = ADC_SEQ_A;
stcChCfg.pu8SampTime = au8Adc1SaSampTime;
AdcSetChannelPinMode(M4_ADC1, ADC1_CHANNEL, Pin_Mode_Ana);
ADC_AddAdcChannel(M4_ADC1, &stcChCfg);
ADC_ConfigAvg(M4_ADC1, AdcAvcnt_256);//此处设得越大,测量的电压越稳定,接近万用表测量值,
ADC_AddAvgChannel(M4_ADC1, ADC1_AVG_CHANNEL);
}
这个Demo真是害死人,我就日了!!!! |