有用过Proteus仿真STM32的ADC模块吗?最近尝试发现不论怎样都不好使,包括是否采用固件,使用标准库还是HAL库,都是不好使的(其他的如GPIO,串口没有问题)。Proteus版本为8.13
不知道你这个问题是否已经解决, 如果还没有解决的话:共分为三种:轮询、中断和DMA三种模式
开启ADC函数
HAL_ADC_Start(&hadc1); //轮询模式开启ADC
HAL_ADC_Start_IT(&hadc1); //中断模式开启ADC
HAL_ADC_Start_DMA(&hadc1);//DMA模式开启ADC
关闭ADC函数
HAL_ADC_Stop(&hadc1); //轮询模式关闭ADC
HAL_ADC_Stop_IT(&hadc1); //中断模式关闭ADC
HAL_ADC_Stop_DMA(&hadc1);//DMA模式关闭ADC
读取ADC转换值
HAL_ADC_GetValue(&hadc1);
ADC校准函数(通常在ADC初始化之后加上该函数)
MX_ADC1_Init(); //ADC初始化
HAL_ADCEx_Calibration_Start(&hadc1);//AD校准
等待转换结束函数(用于轮询模式)
void HAL_ADC_PollForConversion(&hadc1, 50){//第二个参数为等待时间
//判断转化函数是否结束的条件语句
if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK){
/*User Code*/
}
}
ADC中断回调函数(用于中断模式,中断发生则进入该函数)
void HAL_ADC_ConvCpltCallback(&hadc1){
if(hadc->Instance == ADC1){
/*User Code*/
}
}