找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1062|回复: 0
收起左侧

STM32F1使用ADC读取电压问题,ADC_GetConversionValue(ADC1)返回的一直是0

[复制链接]
ID:597761 发表于 2022-4-2 21:07 | 显示全部楼层 |阅读模式
代码编译,仿真运行时均不报错,就是LDR PA0引脚读出的数据一直为0,用探针实际测量有电压

单片机为STM32F103R6

光敏电阻连接在PA0,电路连接如下图所示(尝试过在LDR引脚处加电阻,有电压读出数据还为0)

电压.jpg


adc初始化代码

  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE);

  2. GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
  3.         GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN;
  4.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  5.         GPIO_Init(GPIOA,&GPIO_InitStruct);

  6. RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  7. ADC_DeInit(ADC1);

  8.         ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;        
  9.         ADC_InitStruct.ADC_ScanConvMode = DISABLE;               
  10.         ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;        
  11.         ADC_InitStruct.ADC_ExternalTrigConv        = ADC_ExternalTrigConv_None;
  12.         ADC_InitStruct.ADC_DataAlign        = ADC_DataAlign_Right;        
  13.         ADC_InitStruct.ADC_NbrOfChannel = 1;        
  14.         ADC_Init(ADC1,&ADC_InitStruct);
  15.         
  16.         ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);
  17.         ADC_Cmd(ADC1,ENABLE);               
  18.                
  19.         //ADC_SoftwareStartConvCmd(ADC1,ENABLE);
  20.         
  21.         ADC_ResetCalibration(ADC1);
  22.         delay_ms(500);
  23.         //while(ADC_GetResetCalibrationStatus(ADC1)){OLED_ShowString(0,36,"LSENS Reset...",12);OLED_Refresh_Gram();};
  24.         ADC_StartCalibration(ADC1);
  25.         delay_ms(500);
  26.         //while(ADC_GetCalibrationStatus(ADC1)){OLED_ShowString(0,36,"LSENS Strat...",12);OLED_Refresh_Gram();};
复制代码

读取adc值代码
  1. while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
  2.         return ADC_GetConversionValue(ADC1);
复制代码
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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