打印

请问香主 STM8L151 AD 问题

[复制链接]
3208|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HOLY_JIANG|  楼主 | 2011-11-17 09:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/////////////////////////////////
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,DISABLE);//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值
沙发
HOLY_JIANG|  楼主 | 2011-11-17 10:20 | 只看该作者
问题找到   更改  while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)==0);

看的STM8S 资料  把标志位搞反了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

42

帖子

0

粉丝