int16_t GET_ADC(uint8_t ch) { ADC_ChannelConfTypeDef sConfig = {0}; uint16_t adc_conv_var; if(ch==1) { sConfig.Channel = ADC_CHANNEL_4; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; HAL_ADC_ConfigChannel(&hadc,&sConfig); HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc,20);// ³¬Ê±20ms adc_conv_var = HAL_ADC_GetValue(&hadc); } else if(ch==2) { sConfig.Channel = ADC_CHANNEL_5; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; HAL_ADC_ConfigChannel(&hadc,&sConfig); HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc,20);// ³¬Ê±20ms adc_conv_var = HAL_ADC_GetValue(&hadc); } else if(ch==3) { sConfig.Channel = ADC_CHANNEL_6; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; HAL_ADC_ConfigChannel(&hadc,&sConfig); HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc,20);// ³¬Ê±20ms adc_conv_var = HAL_ADC_GetValue(&hadc); } else if(ch==4) { sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; HAL_ADC_ConfigChannel(&hadc,&sConfig); HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED); HAL_ADC_Start(&hadc); HAL_ADC_PollForConversion(&hadc,20);// ³¬Ê±20ms adc_conv_var = HAL_ADC_GetValue(&hadc); } HAL_ADC_Stop(&hadc); sConfig.Rank = ADC_RANK_NONE; HAL_ADC_ConfigChannel(&hadc,&sConfig); return adc_conv_var; }每一段翻译
时间: 2024-04-01 09:31:51 浏览: 229
int16_t GET_ADC(uint8_t ch) {
这是一个函数定义,函数名为GET_ADC,返回值类型为int16_t(16位整型),参数为一个8位无符号整型ch。
ADC_ChannelConfTypeDef sConfig = {0};
定义了一个ADC_ChannelConfTypeDef类型的结构体变量sConfig,并将其初始化为0。
uint16_t adc_conv_var;
定义了一个16位无符号整型变量adc_conv_var。
if(ch==1)
else if(ch==2)
else if(ch==3)
else if(ch==4)
这里通过判断参数ch的值来选择对应的ADC通道进行配置和采集,并且设置了20ms的采集时间。如果ch的值为1,则配置和采集ADC通道4的模拟量数据;如果ch的值为2,则配置和采集ADC通道5的模拟量数据;如果ch的值为3,则配置和采集ADC通道6的模拟量数据;如果ch的值为4,则配置和采集ADC通道1的模拟量数据。
HAL_ADC_ConfigChannel(&hadc,&sConfig);
HAL_ADCEx_Calibration_Start(&hadc,ADC_SINGLE_ENDED);
HAL_ADC_Start(&hadc);
HAL_ADC_PollForConversion(&hadc,20);
adc_conv_var = HAL_ADC_GetValue(&hadc);
这里是对ADC进行配置和采集的具体步骤。首先,使用HAL库对ADC通道进行配置,并启动ADC校准和转换。然后,使用HAL_ADC_PollForConversion函数等待20ms,直到转换完成。最后,使用HAL_ADC_GetValue函数获取转换结果并将其存储在变量adc_conv_var中。
HAL_ADC_Stop(&hadc);
sConfig.Rank = ADC_RANK_NONE;
HAL_ADC_ConfigChannel(&hadc,&sConfig);
这里停止ADC转换并清除配置,将sConfig的Rank成员设置为ADC_RANK_NONE,然后重新配置ADC通道,以便下一次采集。
return adc_conv_var;
函数返回变量adc_conv_var的值,即16位的ADC转换结果值。
阅读全文