- static void ADC_Config(void)
% S. P5 v: z! H/ l' x* I - {7 f. j& m0 u9 T( n
- ADC_InitTypeDef ADC_InitStructure;
% i {3 R- Z) p2 [" ? - $ L* A6 m0 R# Z2 ^7 h
- & ]3 f3 s9 }+ p0 v5 Y$ Q1 ?
- /* ADCs DeInit */
6 t$ F5 J, r8 u3 Q# S& m - //ADC_DeInit(ADC1);
& T! k2 A2 a2 v6 D" R/ w
' Y- K3 _, @8 {. V- /* Initialize ADC structure */ Z5 o/ I3 [ q% U$ j! Y3 [
- ADC_StructInit(&ADC_InitStructure);
/ R0 ?0 h. I9 H+ w3 } `3 h5 a - * D, X0 g7 r+ b
- /* Configure the ADC1 in continuous mode with a resolution equal to 12 bits */
$ {0 P6 q) @+ |$ m9 h! d5 R - ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;7 V) p, T. k* ~' g2 O2 @/ t8 c
- ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; 9 D/ r1 K+ g0 b }* F" f
- ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
5 U0 i& K# C! s7 z& r. e - ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
3 N7 ^) @$ L* k, ~/ x/ v4 ~$ K - ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
2 ^7 i- U- r& t1 B9 {" D1 }4 z - ADC_Init(ADC1, &ADC_InitStructure);
) j5 ^! K% E* [3 {. k
" ~& j* J- k4 N: g$ ~, F' V- /* Convert the ADC1 Channel 9 with 239.5 Cycles as sampling time */ , H- M) ^# u M3 ~% y ? ^
- ADC_ChannelConfig(ADC1, ADC_Channel_9 , ADC_SampleTime_239_5Cycles);5 ~" M+ P4 y/ j1 R5 \1 k" `5 v
- /* ADC Calibration */1 _, T7 [( p g/ F+ ]
- ADC_GetCalibrationFactor(ADC1);
( [2 g' ?; \+ {0 V- [
1 L9 F2 a8 k( X; Y ]- /* ADC DMA request in circular mode */$ D8 Q1 d3 C& ?4 B* r3 b
- //ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);1 g) A4 Y6 i, ?! W, r
- % {& \& q1 p9 q; M/ K. F% @" X0 r7 d
- /* Enable ADC_DMA */
9 z2 G% G+ k3 o* o, ~ - //ADC_DMACmd(ADC1, ENABLE);
3 g% T" `" J+ v+ @2 `% k: i - 3 [" N/ b2 k! f8 A1 ?# G
- /* Enable the ADC peripheral */& [ `7 E2 s! F1 ]- l5 s
- ADC_Cmd(ADC1, ENABLE); ) Y+ Q4 s4 O, p% v3 j
- p; W: L6 ^: L R. Q
- /* Wait the ADRDY flag */ w& P* h- O Q2 o# q- ]7 |
- while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY)); # g+ T2 N) @' V) k
5 W' c4 F2 ]9 R1 j6 A- /* ADC1 regular Software Start Conv */
4 l4 m$ Y7 c& r# X6 W - ADC_StartOfConversion(ADC1);& _% r: T1 r- b- r/ q& b
4 O8 L# @9 A) d- }
4 {3 b+ p1 G" A) R8 b; ?3 | - ( }& g6 K* G; W
- while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
. e0 c+ ?( `* R Y - _adc=ADC_GetConversionValue(ADC1);
复制代码 . a5 Y, c, `& g# d
1 E: L+ o4 K% g- W0 r8 `1 y, w6 r6 x( ?; v$ b4 r' P; P% Q
3 P; {/ l$ K. m- T& `. D9 O# q |