起因:在学习ADC外设时发现中文参考手册关于“校准时机”的描述自相矛盾,前一句说上电前校准,后一句说上电后校准。
解决过程:直接翻看原英文参考手册相关章节。
结论:ADC校准应当在上电之后,也就是在函数 ADC_Cmd() 之后调用 ADC_StartCalibration() ,代码段示例如下:
void AD_Init(void)
{
/*开启时钟*/
/*设置ADC时钟*/
/*GPIO初始化*/
/*规则组通道配置*/
/*ADC初始化*/
/*ADC使能*/
ADC_Cmd(ADC1, ENABLE); //使能ADC1,ADC开始运行
/*ADC校准*/
ADC_ResetCalibration(ADC1); //固定流程,内部有电路会自动执行校准
while (ADC_GetResetCalibrationStatus(ADC1) == SET);
ADC_StartCalibration(ADC1);
while (ADC_GetCalibrationStatus(ADC1) == SET);
}
附件材料:
中文翻译手册中的描述(自相矛盾)
官方英文参考手册中的描述(正确)
注:本人在学习过程遇到过多次类似的问题,故做此总结。虽然中文参考手册确实方便阅读,但是在遇到问题时一定是以官方英文手册为正确答案。
做此总结,希望帮助到有需要的人!