看了你那份资料,我现在用的是48PIN的C8T6。不知道为什么说这种板不可以用于ADC性能评估。我同样测试了STM8的ADC功能,测出的结果比STM32的好很多,最大误差在6个数值。我不相信STM32没STM8的性能好,现在还在查找问题所在。不过板子确实很简易,没什么可以查的了(STM8的也很简易)。就不知道软件上是否有问题,贴出给大家帮看看能否发现问题。 void ADC_Int(void) { ADC_InitTypeDef ADC_InitStructure;//定义ADC初始化结构体变量
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC1工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE; //禁止扫描 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//ADC转换工作在连续模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//有软件控制转换 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//转换数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1;//转换通道为通道1 ADC_Init(ADC1, &ADC_InitStructure); //初始化ADC
//ADC1选择信道0,音序器等级1,采样时间239.5个周期 ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5);
ADC_Cmd(ADC1, ENABLE);//使能ADC1 ADC_ResetCalibration(ADC1); //重置ADC1校准寄存器 while(ADC_GetResetCalibrationStatus(ADC1));//等待ADC1校准重置完成 ADC_StartCalibration(ADC1);//开始ADC1校准 while(ADC_GetCalibrationStatus(ADC1));//等待ADC1校准完成
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能ADC1软件开始转换 }
|