今天调试了一上午STM32的AD,终于封装成了自己想要的形式,软件控制单次转换,结束时产生中断,发现了个小问题,一开始我的程序是这样的(部分) /* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); /* Check the end of ADC1 reset calibration register */ while(ADC_GetResetCalibrationStatus(ADC1));
/* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1)); ADC_SoftwareStartConvCmd(ADC1, ENABLE); 但是始终相应不了中断,但是当我单步运行,观察寄存器的值确实可以的,很奇怪,我想唯一能解释的就是我单步的时候单行程序之间是有延时的,于是我在 /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1)); delay(); delay(); ADC_SoftwareStartConvCmd(ADC1, ENABLE); 启动AD之前加了一个延时,结果程序跑起来了,看来校准之后要延时一段才能正常工作啊 。 |