虽然可以使用DMA对数据进行传输, 但是采集传输完成,其他外设或者主线程是需要知道是否采集完成,才能使用这个数据的。
; l( ?) e# g" R* T) [ r+ t( u! y如果我们设置好了传输完成中断,就可以实现了。
; b; [. x* x, |在STM32F7中文参考手册中,有关于EOC的介绍:) e! W2 i5 O4 q) O4 U+ O
2 J* ^" [6 D4 \. M- C+ w0 E
% ^; u# ^; ^! k
5 E c# _+ {; Z6 HEOC有以下取值:
: D. N. E Y# H L H( }5 W9 P5 e- N- c- /**! @; z4 ]) D! r M) |, H3 c y
- * @}
2 V: R" a: `9 v% Q - */
3 l3 i0 B3 g8 Z [ - + b. ?+ [* L' u u! M& V! E- y
- /** @defgroup ADC_EOCSelection ADC EOC Selection
$ c4 y2 t7 V; P* Q4 t - * @{
& |$ g5 R, o0 t7 U - */ 3 V, H2 V: F4 @" a* R
- #define ADC_EOC_SEQ_CONV ((uint32_t)0x00000000U)( m- t5 c1 `+ F- [. K
- #define ADC_EOC_SINGLE_CONV ((uint32_t)0x00000001U)" n* J1 J4 T3 `8 s8 K7 _. A
- #define ADC_EOC_SINGLE_SEQ_CONV ((uint32_t)0x00000002U) /*!< reserved for future use */
; j) [& k x+ b1 {8 e$ y" _1 {
复制代码 " N* c( ^- m v4 f8 x
对于我们的单个ADC通道采样,使用ADC_EOC_SEQ_CONV就可以了;
: \+ x9 U' V( Y0 |6 @, O对于一组多个进行采样,可以选择单通道转换完成就进入中断ADC_EOC_SEQ_CONV,也可以选择多通道转换完成进入中断ADC_EOC_SINGLE_CONV ;
4 F8 W7 p- e& B至于最后一个保留值……不小心设置了一下采集出来的数据我直呼看不懂,大家就不用去试了……7 }8 w$ W7 U: T* G% _
$ y' n: ?6 o" ~& @
NVIC配置
& ?# S$ i. W' Q6 O1 l2 Q不配置是没办法进行中断向量跳转的,这个不用解释。
, ?, w- Z. n1 I. @5 j- HAL_NVIC_SetPriority(ADC_IRQn, 1, 0);
# R. K# A% m! s/ x7 h - HAL_NVIC_EnableIRQ(ADC_IRQn);8 A# Q h- L- o( y5 ?
复制代码
7 V# x% f. `- Y( M5 ?# d; L5 n& C$ g配置EOC类型
. J- r% E2 _2 s( F% K# X选择转换结束引发中断的源,就前面讲的两个参数根据自己的需求设置就行了。
, B! A8 Z2 j2 [. ]$ [/ S, O. }- ADC1_Handler.Init.EOCSelection = ADC_EOC_SEQ_CONV;# H/ A) h% ^5 t& m
复制代码
( V# C T/ Q3 X4 Z! N+ M6 q" t# `6 m4 x( n使能EOC中断
. H, A$ v3 L f" P2 D在启动ADC之前,我们要打开EOC中断。! }- a; u) R, A, t* K1 B" u
- __HAL_ADC_ENABLE_IT(&ADC1_Handler, ADC_IT_EOC );% W- x6 o# e8 Q0 E8 W7 F
复制代码
! |) \; \. U: }, L6 u' ~然后编写中断服务函数,一个是自己需要做的事情,另一个就是调用HAL库对应的函数HAL_ADC_IRQHandler清除中断标志等操作。" e" O% J, K1 s( E
- void ADC_IRQHandler(void)1 ]4 G& [( p V2 q
- {
8 n; ?* w& t( b7 ^! v; s - printf("eoc\r\n");4 s- [+ K+ x u3 I
- HAL_ADC_IRQHandler(&ADC1_Handler);1 _$ g; U+ j. H5 B5 ~
- }
, L' y4 Q" A, ] i
复制代码 ) G; [4 G9 x" J0 e
————————————————
+ n! ~: I \1 X1 B版权声明:小盼你最萌哒如有侵权请联系删除
$ r& R( s, H* Y; B. F
4 g' t2 i: l' X+ U% [
# H0 v( e h- r0 n& C* R B! U. H, N6 y2 A* |
|