虽然可以使用DMA对数据进行传输, 但是采集传输完成,其他外设或者主线程是需要知道是否采集完成,才能使用这个数据的。+ e4 }0 s1 \& ^6 B- e6 s; T8 b 如果我们设置好了传输完成中断,就可以实现了。 在STM32F7中文参考手册中,有关于EOC的介绍:, E$ |- [ M* { P" n ' _+ s( y- n2 E EOC有以下取值:
对于我们的单个ADC通道采样,使用ADC_EOC_SEQ_CONV就可以了;9 R* ]# D4 h7 |4 L1 Z& D 对于一组多个进行采样,可以选择单通道转换完成就进入中断ADC_EOC_SEQ_CONV,也可以选择多通道转换完成进入中断ADC_EOC_SINGLE_CONV ; 至于最后一个保留值……不小心设置了一下采集出来的数据我直呼看不懂,大家就不用去试了……& J2 j1 G" e" L - {4 H7 a( ?/ U9 h+ y8 ] 在我们的STM32F7实现ADC等周期采集(定时器触发+DMA传输)上进行修改: NVIC配置+ ^7 e0 o) T1 |1 X# |* q- ]. K- E3 H 不配置是没办法进行中断向量跳转的,这个不用解释。
配置EOC类型 选择转换结束引发中断的源,就前面讲的两个参数根据自己的需求设置就行了。& W$ ? K6 m# _6 u 3 I6 F; p3 f' G0 i& W
使能EOC中断# i, x5 ^- Q4 Y( s& J4 L( j) T- A 在启动ADC之前,我们要打开EOC中断。
然后编写中断服务函数,一个是自己需要做的事情,另一个就是调用HAL库对应的函数HAL_ADC_IRQHandler清除中断标志等操作。1 H$ `) W& D2 H
' m5 Y1 W& E/ l- c9 Z ; x$ c" h; R& f; A |
基于STM32F746G-Discover的扩展电路板
【合集】STM32F7教程、资料大集合
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集
基于STM32F7中实现采集和中断