你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

大家帮我看看,我的AD程序一直卡在校准的位置,怎么破?

[复制链接]
风继续吹QAQ 提问时间:2015-6-15 10:41 /
#include "bsp_adc.h"

void ADC1_IN1_Config(void)
{
         unsigned int  calibration_value = 0;
        GPIO_InitTypeDef    GPIO_InitStructure;
        ADC_InitTypeDef       ADC_InitStructure;
  ADC_CommonInitTypeDef ADC_CommonInitStructure;
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       
       


    /* Configure the ADC clock */
    RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div1);

    /* Enable ADC4 clock */
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE);
       
        ADC_StructInit(&ADC_InitStructure);

        /* Calibration procedure */
        ADC_VoltageRegulatorCmd(ADC1, ENABLE);

        ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single);
        ADC_StartCalibration(ADC1);
       
        while(ADC_GetCalibrationStatus(ADC1) != RESET );
       
        calibration_value = ADC_GetCalibrationValue(ADC1);

    /* Configure the ADC4 in continuous mode */
    ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;                                                                    
    ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode;                    
    ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;            
    ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot;                  
    ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;      
    ADC_CommonInit(ADC1, &ADC_CommonInitStructure);

    ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Enable;
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_0;         
    ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable;
    ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable;  
    ADC_InitStructure.ADC_NbrOfRegChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

     /* ADC4 regular channel5 configuration */
    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_181Cycles5);//2é?ùê±???a21.5us

    /* Enable EOC interrupt */
        ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);

    /* Enable ADC4 */
    ADC_Cmd(ADC1, ENABLE);

    /* wait for ADRDY */
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY) == RESET);
    GPIO_ResetBits(GPIOB,GPIO_Pin_3);
    /* ADC4 start Conversion */
//     ADC_StartConversion(ADC4);   
}
主函数调用ADC1_IN1_Config(),结果程序一直卡在while(ADC_GetCalibrationStatus(ADC1) != RESET );这条AD校准语句上面,为何?

收藏 评论1 发布时间:2015-6-15 10:41

举报

1个回答
lkl0305 回答时间:2015-6-15 23:51:08
帮顶!!!

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版