- static void ADC_Config(void)
8 |5 O4 _+ k8 [, A. G4 E- t. Z1 L - {5 w8 Y) s7 Z' p1 I7 Z
- ADC_InitTypeDef ADC_InitStructure;$ m2 _0 f$ B$ j! _$ l0 z
/ u3 ?4 g( c' l0 R
& f6 o/ }3 c! Z! N+ w) [8 H- /* ADCs DeInit */
7 S ^ c7 J8 s: f. r - //ADC_DeInit(ADC1);
( U* e- P6 k" r! ]3 t" B - . n, j+ ^5 Q* Y& o
- /* Initialize ADC structure */$ y$ E% K8 L3 f) [9 i0 O' S6 T
- ADC_StructInit(&ADC_InitStructure);) e- h5 a( M P, T B& u$ D6 T0 H& t9 \
) `( _+ B! B& a5 b- /* Configure the ADC1 in continuous mode with a resolution equal to 12 bits */8 i' {) m% `1 i
- ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;0 X. [+ u2 g! b: C6 v. Q, A) w( H
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
( J+ E( R$ t" j5 z/ h - ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;1 ?8 y! Y2 }8 w U
- ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;6 B% U! H8 D* [* G3 k" |) H, G
- ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;3 l) S& k- e* O# I1 m5 C
- ADC_Init(ADC1, &ADC_InitStructure); ' K2 `# s* q0 b; Z1 n0 K
- . |6 [! r; Y& i6 u+ Q" F% n- o+ o
- /* Convert the ADC1 Channel 9 with 239.5 Cycles as sampling time */
& _/ s1 d5 r$ h+ W - ADC_ChannelConfig(ADC1, ADC_Channel_9 , ADC_SampleTime_239_5Cycles);" x' ]5 \+ v/ Z, K# T% q0 H
- /* ADC Calibration */
1 \" T$ D5 P2 ]! Q. o$ G; g! ` - ADC_GetCalibrationFactor(ADC1);
, L: `# ~ i9 k8 m" g - 4 @ T! R% s6 X5 r& O" l: R7 k
- /* ADC DMA request in circular mode */, K! M/ i& S* s( C1 K) s2 L
- //ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
; a i0 V0 U7 d( W+ R( D - % [0 n) e0 ]: [/ R2 H
- /* Enable ADC_DMA */3 Y+ y& a+ R, M$ S8 h1 Q4 o
- //ADC_DMACmd(ADC1, ENABLE); / ?5 m$ m. O8 W) n3 }
0 K: h& M$ m) i* X% x5 W* k' K- /* Enable the ADC peripheral */- D- J6 i0 I, K9 S) `* E
- ADC_Cmd(ADC1, ENABLE); ( {9 O6 e0 v, [) ~9 m) ^6 h8 e
- : G) Z" v' R# z& u4 M' C9 }5 E! M
- /* Wait the ADRDY flag */0 J, W' n: I5 f: E
- while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)); 6 g& p b: F0 u+ o
4 a+ ]% R# |6 s8 K( _- /* ADC1 regular Software Start Conv */ % w$ F' f# V- E5 |* z
- ADC_StartOfConversion(ADC1);
; e. h' L' C) `) d+ W. s$ g3 s
: ]9 s8 P; x* g2 f0 O+ ~/ l- }/ A2 }/ u, y$ K$ W- \: j
- + U1 I1 x! o& ^' b8 _3 V4 q+ i
- while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
& [5 J1 e1 {; t0 O" g$ w - _adc=ADC_GetConversionValue(ADC1);
复制代码
& D$ }+ y2 C, z/ O/ s1 P
% B& s, c4 N; @/ |) M
0 Q" }, y9 O' s9 s! v8 H+ T2 y" X
8 ? O7 t5 r; m0 ~& [# z) \ |