Board logo

标题: STM8S ADC中断与非中断采样值的问题 [打印本页]

作者: yuyang911220    时间: 2014-10-26 20:36     标题: STM8S ADC中断与非中断采样值的问题

编译环境IAR ,CPU STM8S903K ,通道PB0 -- AN0, 采集交流信号

void ADC_Init(void)
{
     GPIO_Init(GPIOB, GPIO_PIN_0, GPIO_MODE_IN_PU_NO_IT);
    ADC1_DeInit();

    ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_0,
                ADC1_PRESSEL_FCPU_D12, ADC1_EXTTRIG_TIM, DISABLE,
                ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL0, DISABLE);

     /* Enable the ADC1 peripheral */
    ADC1_Cmd(ENABLE);

    /* Enable EOC interrupt */
#ifdef __ADCInt_
    ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE);    //ADC 中断
#endif
}

#define __ADCInt_
main()
{
      ADC_Init();

      while(1)
      {
           #ifndef __ADCInt_
             Delay_us(Time);
             ADC1_StartConversion();
             while((ADC1->CSR & 0x80)!=0x80); // 等待转换结束
             ADBuf[ADC_Index].Uac = ADC1_GetConversionValue();


   ADC_Index++;
         #endif
      }
}


INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
{

       ADC1_StartConversion();
/*Start Conversion */
      TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
      return;
}



INTERRUPT_HANDLER(ADC1_IRQHandler, 22)
{

static vu8 ADC_Index;



ADBuf[ADC_Index].Uac = ADC1_GetConversionValue();


ADC_Index++;

ADC1_ClearITPendingBit(ADC1_IT_EOC);

}




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0