使用HAL_ADC_PollForConversion可以进行一次转换,但是会根据设置的EOC类型决定是完成单通道转换还是Rank序列转换。
/ h" \$ @7 T: j: n. S" |7 B2 \3 R% A% l p3 _ V
主函数逻辑代码如下:
: _9 k; a7 L6 N* t8 S) j$ ~- #include "sys.h"
4 q Y' l' L- A1 f/ k - #include "delay.h". u9 T! {8 l' u- s8 [4 o5 Q" d% |
- #include "usart.h"
3 L" c& m/ w2 U - #include "adc.h"
( e. f% M# X' _& U. ` - / F8 p L ?% f7 q* i$ X; N
- int main(void)
& q% R: R7 r2 j' e/ z7 X: K* ~8 P - {
/ {% Y0 V1 |7 W* T- p - u16 adcx;
' l8 g6 u. M5 l, q, y: f - //Cache_Enable(); //打开L1-Cache
0 _ U; }% d# f" d' M - HAL_Init(); //初始化HAL库
3 d( H# p& [0 D3 o - Stm32_Clock_Init(200, 2, 2, 2); //设置时钟,400Mhz2 p! Q2 Z( P" z. X5 x+ r5 L" X
- delay_init(400); //延时初始化
- @! \4 F4 `1 G- w; ~6 z5 D6 R* N - uart_init(115200); //串口初始化5 E) \6 W F- a2 q
- printf("hello\r\n");0 h9 o- _( T/ k; ^" P
- MX_ADC1_Init();% }2 n; E$ @$ o( u# l3 f
- while (1)
$ h$ W6 a) c0 p4 o0 M/ N - {# M+ [7 \7 W3 C4 F
- HAL_ADC_Start(&hadc1); //开启ADC# g' d. S/ l8 u' J, q; v J7 e/ I
- HAL_ADC_PollForConversion(&hadc1, 10); //轮询转换. K! j* T0 @! g B4 Z/ t- T
- for (int i = 0; i < 8; i++)7 }- |4 M$ u5 D& O
- {7 C) V9 b" s0 F/ K2 s/ T6 w
- printf("%d\t", (u16)HAL_ADC_GetValue(&hadc1)); //返回最近一次ADC1规则组的转换结果
. g6 J8 Z' S2 f. s - }' Z6 d; r1 }/ ~7 k9 ?/ e) Y
- printf("\r\n");# ? e# W* X+ F0 j9 K. f6 x5 n
- delay_ms(500);
) s+ P0 x) L5 E8 P# z: } - }+ E T9 m6 V4 |
- }
8 T f4 G" A' C( l x/ c
! t6 `8 u/ K. |) b9 W" y- void Error_Handler(void)9 F8 @4 M6 @; l* R% @
- {
7 ~6 a9 e/ E0 B$ v! W9 ^( w: ~ - /* USER CODE BEGIN Error_Handler_Debug */
6 P P& t3 {1 u/ f; `+ c - /* User can add his own implementation to report the HAL error return state */
, U! |. }5 }) {, c5 k2 e
. C r) }* J( B. f. S( q$ i/ K- /* USER CODE END Error_Handler_Debug */9 h B# { `* S, g i H) ^
- }
+ H+ o4 Q* G, o
复制代码 4 D" s0 q7 g1 k0 B- i8 |0 e/ D
实验效果如下,中途将接入到3.3V的PA3切换到了PA2~
8 e+ i1 s1 Q& n7 d/ B) {
6 ~; j$ E( B5 S7 @
m* L9 d: L# F. }% s) \
2 \/ |2 ^6 E3 }- Y————————————————
: b$ ?* c7 l) a* J) m版权声明:小盼你最萌哒
4 b) @& k0 w" f( k2 {7 e" k. o$ ^2 d" F' b% U+ o* U: ^4 t
|