初级会员

- 积分
- 62
- 金钱
- 62
- 注册时间
- 2020-10-6
- 在线时间
- 6 小时
|
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();
}
}
这是我的串口显示

这是正确的串口显示

|
-
错误显示
-
应有显示
|