(论述题)5.结合下面中“多通道轮询模拟量采集”的程序回答以下问题:(1)解释代码中 HAL_ADC_Start()、HAL_ADC_PollForConversion()、HAL_ADC_GetValue()三个函数的作用,并说明为何需要调用函数HAL_ADC_ConfigChannel()。(2)根据程序解释说明ADC采样后的数字量最终是如何形成的?(3)根据程序分析ADC的采样位数是多少位?若采样值为0x305,则最终采样电压是多少?
while (1)
{
for(cnum=0;cnum<4;cnum++)
{
ADVal=0;
sConfig.Channel = cnum;
sConfig.Rank = 1;
sConfig.SamplingTime= ADC_SAMPLETIME_56CYCLES;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
Error_Handler();
for(i=0;i<20;i++)
{
HAL_ADC_Start(&hadc1);
if(HAL_ADC_PollForConversion(&hadc1,200)==HAL_OK)
{
ADVal=ADVal+HAL_ADC_GetValue(&hadc1);
}
}
ADVal=ADVal/20;
printf(TempStr,"CH%d,Val:%04d,Vol:%.3fV",cnum+1,ADVal,3.3*ADVal/4096);
printf(“/r/n”)
HAL_Delay(500);
}
}