OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3780|回复: 1

ADC读取不了数值,一样的设置被人的文件就能显示电压,我的就是0.00V

[复制链接]

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2020-10-6
在线时间
6 小时
发表于 2021-3-18 22:47:48 | 显示全部楼层 |阅读模式
2金钱
ADC是PC0端口,设置什么的都和一个没问题的文件一样,但是不知道为什么我的ADC读取数值一直为0;除了ADC是我新加的函数之外,其他函数都己经验证可用。

这是我的ADC部分的设置:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOB, &GPIO_InitStructure);

void ADC_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure;
    //adc
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    ADC_RegularChannelConfig(ADC1, ADC_Channel_8, 1, ADC_SampleTime_13Cycles5);
    ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);
    ADC_Cmd(ADC1, ENABLE);
    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));

}
void Read_ADC(void)
{
  float ADC_VALUE;
   ADC_SoftwareStartConvCmd(ADC1, ENABLE);  
   ADC_VALUE = ADC_GetConversionValue(ADC1)*3.3/0xFFF;
   sprintf((char*)string,"%s%.2fV        ","ADC:",ADC_VALUE);
   //LCD_DisplayStringLine(Line5,string);
   USART_SendString(string);
}

int main(void)
{         
        ADC_Config();
        GPIO_Config();         
        EXTI_Config();
        NVIC_Config();
        USART_Config();
        SysTick_Config(SystemCoreClock/1000);
        LCD_Config();
        LED_Control(LEDALL,0);
        while(1)
        {         
                Read_ADC();
               
                if(RXMODE==1) ledmode_on();//LED流水灯循环模式
                else if(RXMODE==2) ledmode_off();

                if(state==1) ledmode1();
                else if(state==2) ledmode2();
                else if(state==3) ledmode3();
                else if(state==4) ledmode4();
        }
}


这是我的串口显示

这是正确的串口显示

错误显示

错误显示

应有显示

应有显示

最佳答案

查看完整内容[请看2#楼]

我知道了,时钟使能没有放在ADC配置部分的前面,导致ADC使能不了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2020-10-6
在线时间
6 小时
 楼主| 发表于 2021-3-18 22:47:49 | 显示全部楼层
我知道了,时钟使能没有放在ADC配置部分的前面,导致ADC使能不了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-30 15:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表