使用HAL_ADC_PollForConversion可以进行一次转换,但是会根据设置的EOC类型决定是完成单通道转换还是Rank序列转换。
: ~/ w t r: w1 d i! @" q
+ V3 v+ ]9 _1 @/ U# v0 p主函数逻辑代码如下:1 N8 D7 y# B$ I9 v" } I" ^
- #include "sys.h"
! m# k6 @ u; H) A; R- i3 I - #include "delay.h"
7 l7 R2 g S/ x4 N( A6 e - #include "usart.h"9 s' A5 B9 s0 n G: [
- #include "adc.h"
9 M% _) G: g; f4 y. U
& `2 o+ x; ?* \6 H! u4 F- int main(void)
" Z# ]& S R, A - {1 g- @0 J- z' q6 L: g# S' v1 L
- u16 adcx;9 _0 p( D5 d) E# I3 q) d6 s/ ]
- //Cache_Enable(); //打开L1-Cache
) E7 n& _' k$ i- R1 m4 J- z6 Q - HAL_Init(); //初始化HAL库
' F q# [: I$ @0 v k - Stm32_Clock_Init(200, 2, 2, 2); //设置时钟,400Mhz
( M8 u/ C; s# A# \8 C5 R4 o5 C - delay_init(400); //延时初始化( m j% _6 {0 ~, P# I2 f
- uart_init(115200); //串口初始化# z2 g. h1 A$ R" E, j, w& K
- printf("hello\r\n"); Y3 ^ L& ` }: ^/ ^9 a# v; m `* ^
- MX_ADC1_Init();
/ Q& b& S. o$ m# [0 b - while (1)) i6 b6 X/ K4 @* F% k# r6 R% m
- {
2 O! A- p: o" S8 ]; }/ e$ \ - HAL_ADC_Start(&hadc1); //开启ADC8 K4 n" @- W. w) ^
- HAL_ADC_PollForConversion(&hadc1, 10); //轮询转换
s- M8 Q# ` b- c3 f - for (int i = 0; i < 8; i++)
. L2 a5 I0 t" ~: u* S7 V - {
0 r4 X8 l s- j" N M - printf("%d\t", (u16)HAL_ADC_GetValue(&hadc1)); //返回最近一次ADC1规则组的转换结果6 S; C! _2 A5 \
- }2 i: h Y* \4 F6 {
- printf("\r\n");
i' u7 f% n$ Z: D - delay_ms(500);
% }$ U; H7 ^4 y - }( J# M2 W5 T: s6 D4 o+ N9 L
- }
' G9 p7 }8 H0 C
$ `, v8 b- m4 ]; {9 C; n- void Error_Handler(void)
8 b4 r4 w/ I" W i- ^ - {1 g. V/ B9 H. E z( Q+ p
- /* USER CODE BEGIN Error_Handler_Debug */8 t7 }8 j( b7 c4 s6 P
- /* User can add his own implementation to report the HAL error return state */) ?9 e- p* Z2 h" B7 @
$ Q7 k9 m" n! l" [; {6 O0 G1 E; o- /* USER CODE END Error_Handler_Debug */
; N9 U3 K" B! A8 C' B - }
% N) S- {. x3 x7 N& G Q6 K; s* `
复制代码 1 \6 L# Q: d, u4 q- i
实验效果如下,中途将接入到3.3V的PA3切换到了PA2~
8 H1 C9 n f. |/ p: \. ]0 C! y O
" e' Y* c3 ]9 R D. N9 w
) y, ~: G6 {# S————————————————+ w/ E: t- {: X) a
版权声明:小盼你最萌哒
7 g, t. d, h7 W$ E7 X5 q
+ N; d7 }: T: g) k- M% S |