虽然可以使用DMA对数据进行传输, 但是采集传输完成,其他外设或者主线程是需要知道是否采集完成,才能使用这个数据的。% n5 }: L" o ]6 w- d
如果我们设置好了传输完成中断,就可以实现了。, F% S4 D1 [3 K, B
在STM32F7中文参考手册中,有关于EOC的介绍:
& A1 l" u5 I$ U* B* S
* z2 O7 t7 O7 e
3 n! }: u' l, T. U s; S9 x
5 d6 p$ D. _4 j6 Q4 J' [7 P( iEOC有以下取值:
1 q3 B' z Q8 ?7 W/ [- /** j. T' `/ \( v5 A/ Z
- * @}% @5 X, x% d E& S. i3 a. K* |
- */
4 N d2 @% y4 c& n$ @& Y* E - : ]" Q& A2 u# v; x9 @1 g8 d; M
- /** @defgroup ADC_EOCSelection ADC EOC Selection, p& W9 ~0 [: L. o! ~7 X& P
- * @{
9 \9 A% P6 z4 e, _; e - */ 7 |" y4 C2 Q3 z7 y/ d8 q
- #define ADC_EOC_SEQ_CONV ((uint32_t)0x00000000U)
% n! `5 l$ Y+ G% @- Y2 t/ E( i5 }0 } - #define ADC_EOC_SINGLE_CONV ((uint32_t)0x00000001U)- R' O: u4 \2 a8 `' l7 y9 M. |
- #define ADC_EOC_SINGLE_SEQ_CONV ((uint32_t)0x00000002U) /*!< reserved for future use */
' J0 M. y9 H6 E; E, Q" U
复制代码 5 ^' W& x5 n' w, Q9 J3 R4 \
对于我们的单个ADC通道采样,使用ADC_EOC_SEQ_CONV就可以了;
7 X! b& C. A9 }0 K; O3 i# B对于一组多个进行采样,可以选择单通道转换完成就进入中断ADC_EOC_SEQ_CONV,也可以选择多通道转换完成进入中断ADC_EOC_SINGLE_CONV ;
. Y9 C( E# J: A& {9 w至于最后一个保留值……不小心设置了一下采集出来的数据我直呼看不懂,大家就不用去试了……
6 {% c5 |- P$ }# L5 w+ F+ A( `0 F5 [# `9 l
NVIC配置
# U' g8 u/ C. x. }不配置是没办法进行中断向量跳转的,这个不用解释。
3 E9 B; S0 ^ z/ s; T- HAL_NVIC_SetPriority(ADC_IRQn, 1, 0);
( N: @! h9 o( w, F - HAL_NVIC_EnableIRQ(ADC_IRQn);
, u3 ~9 ~5 m( J
复制代码 . z# p9 M. l; s
配置EOC类型
1 j k9 q$ O. A. L9 P/ Z0 O' u2 L. U* a选择转换结束引发中断的源,就前面讲的两个参数根据自己的需求设置就行了。8 p2 o+ z2 U! @
- ADC1_Handler.Init.EOCSelection = ADC_EOC_SEQ_CONV;
8 c; @. l0 @* ` L- D. k
复制代码 2 w) |3 |) }: _) J
使能EOC中断
! ]$ U. {6 c* I8 F9 C' z2 p; q在启动ADC之前,我们要打开EOC中断。2 u6 o3 J/ w7 I. h
- __HAL_ADC_ENABLE_IT(&ADC1_Handler, ADC_IT_EOC );
3 L* r" P* P) Y- v
复制代码 8 B; Q/ ?8 ~, @3 v+ U+ [2 ^
然后编写中断服务函数,一个是自己需要做的事情,另一个就是调用HAL库对应的函数HAL_ADC_IRQHandler清除中断标志等操作。
I5 k- \) B( `! K0 O5 f) W- void ADC_IRQHandler(void)
. l- d& L6 O+ B* x+ O, D+ b - {: h; X9 ~& R2 j9 t; e, z7 P' i
- printf("eoc\r\n");7 \4 _9 ~. w$ G5 h9 B0 w" O6 D
- HAL_ADC_IRQHandler(&ADC1_Handler);
1 \* u" P" I& r1 F$ X - }" q: f- G- u" s5 f
复制代码
. N: r) ?/ \' u1 l0 [————————————————# }5 T- @; p: v# `% K
版权声明:小盼你最萌哒如有侵权请联系删除1 V& A- E4 n. \6 }6 @0 ]
0 a1 v: |8 p' P5 N6 u2 ? ?- ~" U% d" Y1 ~
' o8 g2 L: {. e4 A+ X& x* D, _ |