以下是我的cubemx配置图,我想做4M系统时钟配置10M采样频率,ADC用的时钟是锁相环2,配置140M。开启ADC电源后,单独使用ADC_start可以从寄存器读取ADC的值,但使用ADC_start_DMA这个就完全不运行,但是主循环里的串口打印一直有,求解(ADC4因为要配置IN16使用了不可完全设置ADC这个选项!)
在使用了下面开启电源并打开adc dma后,打印adc value的数据
HAL_PWREx_EnableVddA();
HAL_PWREx_EnableVddIO2();
if (HAL_ADCEx_Calibration_Start(&hadc4, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
{
/* Calibration Error */
Error_Handler();
}
HAL_ADC_Start_DMA(&hadc4, (uint32_t *)&adc_Value, 16);
……
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc4), HAL_ADC_STATE_REG_EOC))
{
for (int i = 0; i < 50; i++)
printf("%d ", adc_Value[i]);
}
printf("\n");
打出来全是空格,表明ADC没转换完成。