感谢提醒 差点踩坑
引用
评论
用CUBEMX(6.12.0)配置STM32F373的SDADC,可是按照配置常规ADC的步骤配置完之后并不能直接用,测量得的电压不随引脚输入改变,相关资料少,花了挺多时间踩坑。
SDADC配置如下
后面检查发现,CUBEMX(6.12.0)自动生成的代码中缺少把引脚绑定到SDADC输入通道上面去的相关函数,也缺少自动校准函数。
在sdadc.c文件MX_SDADC1_Init()语句下的/* USER CODE BEGIN SDADC1_Init 2 */与/* USER CODE END SDADC1_Init 2 */之间加入如下语句即可。
/* USER CODE BEGIN SDADC1_Init 2 */
if (HAL_SDADC_AssociateChannelConfig(&hsdadc1, SDADC_CHANNEL_4, SDADC_CONF_INDEX_1) != HAL_OK)
{
Error_Handler();
}
if (HAL_SDADC_CalibrationStart(&hsdadc1, SDADC_CALIBRATION_SEQ_3) != HAL_OK)
{
Error_Handler();
}
if (HAL_SDADC_PollForCalibEvent(&hsdadc1, HAL_MAX_DELAY) != HAL_OK)
{
Error_Handler();
}
if (HAL_SDADC_ConfigChannel(&hsdadc1,SDADC_CHANNEL_4,SDADC_CONTINUOUS_CONV_ON) != HAL_OK)
{
Error_Handler();
}
/* USER CODE END SDADC1_Init 2 */这样在初始化的时候就能自动绑定引脚和校准。
在单次读取数据的时候需要使用
while (HAL_SDADC_PollForConversion(&hsdadc1, 10) != HAL_OK) { }等待SDADC转换完成之后再读数。
代码与CUBEMX里面的具体配置可以下载下面文件自行查看