找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7822|回复: 0
打印 上一主题 下一主题
收起左侧

STM32L152非DMA方式多通道ADC

[复制链接]
跳转到指定楼层
楼主
ID:86204 发表于 2015-7-21 01:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表