关于ADC校准的,为什么这样写,程序会死在while();循环内啊?求告知

2019-08-14 06:48发布

关于ADC校准,为什么这样写,程序会死在while();循环内啊?
    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1) == RESET);
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1) == RESET);

只要校准没结束就一直等待,为什么程序会死呢?
    while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
串口的等待发送完毕都是这样的,为什么两者出现了不一样的结果啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
jiutianshenjian
2019-08-14 11:58
本帖最后由 jiutianshenjian 于 2017-8-22 15:53 编辑

是==SET你非要写==RESET,还问为什么。
你的是==RESET就一直循环。当然死了。
这可是官方例程这样写的:
    /* Enable ADC1 reset calibration register */
    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1));
    /* Start ADC1 calibration */
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));

//你看看这个是不是==RESET就退出循环了,你的恰恰相反。
至于为什么,你自己去查手册,没兴趣。

一周热门 更多>