/////////////////////////////////
void CLK_CONFIG(void)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_2);
}
//////////////////////////////////////
void GPIO_CONFIG(void)
{
GPIO_Init(GPIOC,GPIO_Pin_0, GPIO_Mode_Out_PP_High_Slow ); //WARNING LED PIN
//GPIO_Init(GPIOB,GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow );//SEG PIN
//GPIO_Init(GPIOD,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7, GPIO_Mode_Out_PP_High_Slow );//BIT PIN
GPIO_Init(GPIOA,GPIO_Pin_4 , GPIO_Mode_In_FL_No_IT ); //AD PIN
GPIO_Init(GPIOC,GPIO_Pin_4 , GPIO_Mode_In_FL_No_IT ); //AD PIN
}
///////////////////////////////////////////////////
uint16_t adc1_input2(void)
{
uint8_t i;
uint16_t adc_number;
ADC_SoftwareStartConv(ADC1);
//ADC_Cmd(ADC1,ENABLE); //START ADC
for(i=0;i<200;i++);
//ADC_Cmd(ADC1,ENABLE);
while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
adc_number=ADC_GetConversionValue(ADC1);
ADC_ClearFlag(ADC1,ADC_FLAG_EOC);
return(adc_number);
}
///////////////////////////////////////////////////
void adc1_input2_init(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);
ADC_DeInit(ADC1);
ADC_Init(ADC1,ADC_ConversionMode_Single,ADC_Resolution_12Bit,ADC_Prescaler_1);
ADC_SamplingTimeConfig(ADC1,ADC_Group_SlowChannels,ADC_SamplingTime_384Cycles);
ADC_ChannelCmd(ADC1,ADC_Channel_2,ENABLE); //
ADC_VrefintCmd(ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_DMACmd(ADC1,ENABLE);//DISABLE
}
void main( void )
{
uint16_t wd_temperature_show_number;
wd_temperature_show_number=168;
DelayUs(150);
CLK_CONFIG();
GPIO_CONFIG();
adc1_input2_init();
LED_H();
LED_L_DH();
while(1)
{
/*
temp++;
if(temp==6000) {temp=1;}
if(temp<3000) {LED_L();}
if(temp>=3000) {LED_H();}
else{}
*/
//LED_H_B();
wd_temperature_show_number=adc1_input2();
if(wd_temperature_show_number==0)
{LED_L();}
else
{LED_H();;}
}
}
始终读不了 AD值,return返回值始终为0,采用端口ADC1_IN2 (PA4) 芯片STM151LC2T6 ad端口电压0.2V 采用外部2.5 VREF 在添加了“CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);” 时钟后单片工作不正常 不添加该语句 读得 CR1 0X01 CR2 0X07 CR3 0X1F SQR4 0X04 没有搞懂CR2为0x07 这个怎么能工作
最总问题是 还是读不了 AD值 |