STM32 ADC単一チャネル獲得(STM32F103C8T6 ADC1チャネル0)

// STM32F103C8T6 ADC1チャネルはチャネル10を有し、次のとおり
10フィートPA0をADC12_IN0 @
。@ 11フィートADC12_IN1 PAL
@ 12 ADC12_IN2ピンPA2で
13 @ ADC12_IN3ピンPA3で
14 ADC12_IN4ピンPA4 @
15フィートADC12_IN5 PA5 @
/ PA6の/ 16フィートADC12_IN6
// 17フィートADC12_IN7 PA7。
//ピン18 ADC12_IN8 PA8ある
// 19フィートADC12_IN9 PA9。
// ADC12はADC1またはADC2を処方することを意図するものではなく、ADC12
//次の手順はmain.cのです。

#include "stm32f10x.h"
の#include "stm32f10x_tim.h"
の#include "stm32f10x_rcc.h"
の#include "stm32f10x_gpio.h"
の#include "stm32f10x_adc.h"

フロートadc_data = 0、dyzh = 0 ; // 変数の取得価額、可変電圧表示の値
//引用され、ソースhttps://www.cnblogs.com/beiyhs/p/12320695.htmlを明記してください。**漢シャンの北***

空隙ADC_GPIO_Init(ボイド)// ADC-のGPIO 入力端子、10は外部入力チャネルに設けてもよい
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA、ENABLE); //スイッチのポートAにAHBプリスケーラを有効
// RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO、ENABLE);

GPIO_InitTypeDef GPIO_InitStructure; //宣言可変構造
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; //はPA0、ADのPA1入力端子定義
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AINと、アナログ入力モードの// IOポート
//GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; // AD入力ポートはフローティングに設けられ
GPIO_Init(GPIOA、&GPIO_InitStructure); // Aポートを上記パラメータA0 / A1に従って
}

// **************************** ********************************************
無効ADC1_Init(無効)/ /パラメータおよび設定ADC取得
{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1、ENABLE); //切り替えることAHB周辺ADC1プリスケーラを有効
RCC_ADCCLKConfig(RCC_PCLK2_Div8を); //クロック分周器72M / 8 = 9Mは、最大クロック14M超えない
ADC_DeInit(ADC1)を; // ADCリセット
ADC_DMACmd(ADC1、DISABLEを); //無効にDMA

ADC_InitTypeDef ADC_InitStuctrue; //宣言ADC構造変数
ADC_InitStuctrue.ADC_Mode = ADC_Mode_Independent; // ADCをスタンドアロンモード
ADC_InitStuctrue.ADC_ScanConvMode = DISABLE; _シングルチャンネルスキャンするかどうかを//
ADC_InitStuctrue.ADC_ContinuousConvMode = DISABLEを; // _かの連続した単一
ADC_InitStuctrue.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //外部トリガを持たない、トリガー変換ソフトウェア
ADC_InitStuctrue.ADC_DataAlign = ADC_DataAlign_Right; //データを右寄せさ
ADC_InitStuctrue.ADC_NbrOfChannel = 1; // _チャネルの数単一チャネル構造_ADC-
//ADC_InitStuctrue.ADC_ScanDirection=ADC_ScanDirection_Backward。 //データカバー/ブラウズ方向
ADC_Init(ADC1、&ADC_InitStuctrue); // 上記パラメータADC1によってセット

ADC_RegularChannelConfig(ADC1、ADC_Channel_0 ,. 1、ADC_SampleTime_1Cycles5);
// ADC周辺構成と特定のドッキング機能の内容(ADCポート1、ADCチャネル0、変換数-変換の変換周期)
ADC_Cmd(ADC1、ENABLE) ; // ADC1有効
ADC_ResetCalibration(ADC1)を; //リセットADCキャリブレーション機能を登録する
(ADC_GetResetCalibrationStatus(ADC1))しながら、ステップの完了//待機
ADC_StartCalibration(ADC1); //指定されたADC校正開始状態
(ADC_GetCalibrationStatus(ADC1ながら));前のステップの完了を待機//
}
// ************************************** ************************************************** **
空隙Delay_ms(ボイド)
{
  unsigned char型I、J。
  以下のために(; I> 0 i-- iが255 =)
     {
      ため(j-- J = 250; J> 0)。
     }
}

// **************************** ******************************************
// ****** ************************************************** **********************************
INTメイン(ボイド)
{
  ADC_GPIO_Init(); // ADC構成IOポート
  ADC1_Init(); // ADC構成パラメータと取得

  一方、(1)
   {
   Delay_ms();
   ADC_SoftwareStartConvCmd(ADC1、ENABLE); //ソフトウェアトリガスイッチ_ADC -スイッチ・ステータス・レジスタは0であり
   、一方(ADC_GetFlagStatus(ADC1、ADC_FLAG_EOC)== RESET);完全にADCの//待機
   adc_data = ADC_GetConversionValue (ADC1); // ADCデータが取得されたデータであります

   (adc_data * 3.27)/ dyzh = 4095; //は、 電圧値が取得される変換
                                                                               //基準電圧3.27V、12ビット分解能4095を
                                                                               //これはdyzh値上記参照、ブレークポイントを設定することができます
    }
}

おすすめ

転載: www.cnblogs.com/beiyhs/p/12320695.html