找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7822|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32L152非DMA方式多通道ADC

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:86204 發(fā)表于 2015-7-21 01:03 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
void ADC_InitConfiguration(void)

{



  ADC_InitTypeDef ADC_InitStructure;





  RCC_HSICmd(ENABLE);



  while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET)

  {}



  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

  ADC_DeInit(ADC1);



  ADC_StructInit(&ADC_InitStructure);

  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;

  ADC_InitStructure.ADC_ScanConvMode = DISABLE;

  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;

  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

  ADC_InitStructure.ADC_NbrOfConversion = 1;

  ADC_Init(ADC1, &ADC_InitStructure);



// ADC_RegularChannelConfig(ADC1, BUS_VOL_CHN, 1, ADC_SampleTime_192Cycles);

  ADC_DelaySelectionConfig(ADC1, ADC_DelayLength_Freeze);

  ADC_PowerDownCmd(ADC1, ADC_PowerDown_Idle_Delay, ENABLE);





  ADC_Cmd(ADC1, ENABLE);



  while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET)

  {

  }

}

UINT GetADCValue(void)

{

    unchar i;

    for(i=0; i<5; i++)

    {

        AD_Value[i] = 0x0FFF;

        switch (i)

        {

            case 0: ADC_RegularChannelConfig(ADC1, BUS_VOL_CHN, 1, ADC_SampleTime_192Cycles); break;

            case 1: ADC_RegularChannelConfig(ADC1, CURRENT_CH1_CHN, 1, ADC_SampleTime_192Cycles); break;

            case 2: ADC_RegularChannelConfig(ADC1, CURRENT_CH2_CHN, 1, ADC_SampleTime_192Cycles); break;

            case 3: ADC_RegularChannelConfig(ADC1, CURRENT_CH3_CHN, 1, ADC_SampleTime_192Cycles); break;

case 4: ADC_RegularChannelConfig(ADC1, CURRENT_CH4_CHN, 1, ADC_SampleTime_192Cycles); break;

        }

        // ?????ADC_Cmd()

        ADC_Cmd(ADC1, ENABLE);

        ADC_TempSensorVrefintCmd(ENABLE);

        ADC_SoftwareStartConv(ADC1);

        // ????????

         while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET)

         AD_Value[i] = ADC_GetConversionValue(ADC1);

        ADC_ClearFlag(ADC1, ADC_FLAG_EOC);



        ADC_SoftwareStartConv(ADC1);

        ADC_Cmd(ADC1, DISABLE);

    }

}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表