首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM8S ADC中断与非中断采样值的问题

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);

}
继承事业,薪火相传
返回列表