STM8L0852的AD转换问题

2019-07-19 21:33发布

参照官方库例程写了一个简单的AD转换程序,但是程序运行后AD转换始终没开启。存放AD转换结果的寄存器中的数据是随机的  有知道原因的吗?主程序如下 void main(void)
{    /* CLK configuration -------------------------------------------*/
  CLK_Config();
   /* ADC configuration -------------------------------------------*/
  ADC_Config();  
  /* Initialize LEDs mounted on YANGAN board */
  GPIO_Init(AD_GPIO_PORT, AD_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
  AD_Smoke_PowerOn();
  /* Init TIM2 to generate 1 ms time base update interrupt */
  //TimingDelay_Init();
  /* Enable Interrupts */
  //enableInterrupts();   /* Infinite loop*/
  while (1)
  {
        uint16_t samp=0;
 
 
 
 while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);//等待采样完成
 
 
 
 ADC_ClearFlag(ADC1, ADC_FLAG_EOC);//清采样完成标志
  
 samp = ADC_GetConversionValue(ADC1);//读取采样数据  ADC_SoftwareStartConv(ADC1);//重新启动采样   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
yuanzinpl
2019-07-20 01:44
原子大哥 也帮忙分析这个程序有问题吗   这是AD配置程序
static void ADC_Config(void)
{
  /* Initialize and configure ADC1 */
  ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_2);
  ADC_SamplingTimeConfig(ADC1, ADC_Group_SlowChannels, ADC_SamplingTime_384Cycles);
  //ADC_SamplingTimeConfig(ADC1, ADC_Group_FastChannels, ADC_SamplingTime_384Cycles);
 
  //采集通道设为输入模式
  GPIO_Init(GPIOA, GPIO_Pin_5, GPIO_Mode_In_FL_No_IT);
  //启用内部参考电压
   ADC1->TRIGR[0] |= 0x10;

  /* Enable ADC1 */
  ADC1->CR1 |= 0x01; //第一次写1是从低功耗模式唤醒
  ADC_Cmd(ADC1, ENABLE);
  
/**********************************/  
  /* Enable ADC1 Channels 0 */
  //ADC_ChannelCmd(ADC1, ADC_Channel_0, ENABLE);  
   /* Enable ADC1 Channels 1 */
  ADC_ChannelCmd(ADC1, ADC_Channel_1, ENABLE);
   /* Enable ADC1 Channels 2 */
 // ADC_ChannelCmd(ADC1, ADC_Channel_2, ENABLE);
  
  /* Enable End of conversion ADC1 Interrupt */
 // ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);

  /* Start ADC1 Conversion using Software trigger*/
  ADC_SoftwareStartConv(ADC1);
/**********************************/  
  
  
  
}

一周热门 更多>