HAL_Delay(5000);
if (HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED) != HAL_OK)
{
print_debug_str("Did not calibrate right!");
}
else
{
char buf[32];
sprintf(buf,"Calibration Factor: %lu\r\n",ADC1->CALFACT);
print_debug_str(buf);
}
但如果我在这一行设置断点:
if (HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED) != HAL_OK)
然后单步跳过(step over),它就会正常工作。
如果移除 HAL_Delay(5000),函数不会执行, 除非我设置断点。即便断点后立即继续运行,此时实际延迟远小于 5 秒,函数也能返回 HAL_OK。
我当初添加这个延迟是因为觉得 ADC 需要更多稳定时间,但事实似乎并非如此。我甚至把延迟延长到 15 秒,仍然无法返回 HAL_OK。
|
|