虽然可以使用DMA对数据进行传输, 但是采集传输完成,其他外设或者主线程是需要知道是否采集完成,才能使用这个数据的。( ?: {" e1 l6 S1 G1 L; K3 W8 o 如果我们设置好了传输完成中断,就可以实现了。! ?2 ~6 x3 \; [2 C0 I+ v 在STM32F7中文参考手册中,有关于EOC的介绍: EOC有以下取值:
对于我们的单个ADC通道采样,使用ADC_EOC_SEQ_CONV就可以了; 对于一组多个进行采样,可以选择单通道转换完成就进入中断ADC_EOC_SEQ_CONV,也可以选择多通道转换完成进入中断ADC_EOC_SINGLE_CONV ; 至于最后一个保留值……不小心设置了一下采集出来的数据我直呼看不懂,大家就不用去试了…… 7 _8 w3 @- r& W( H/ U# W( S# Y 在我们的STM32F7实现ADC等周期采集(定时器触发+DMA传输)上进行修改: NVIC配置 不配置是没办法进行中断向量跳转的,这个不用解释。6 A1 k1 U# ^$ S/ l; I" R- ~- { ) D! Y# z7 I" I6 E- ?
配置EOC类型* a' W$ O" }0 {0 F$ `2 A 选择转换结束引发中断的源,就前面讲的两个参数根据自己的需求设置就行了。# `9 c O) O% o7 _/ m; f. ~+ y @ ; w. g1 @" a, }
使能EOC中断6 r6 S* ~0 J% w5 r- b 在启动ADC之前,我们要打开EOC中断。: l( _0 I% L2 k1 s 6 |& u4 U d' n R8 ?
然后编写中断服务函数,一个是自己需要做的事情,另一个就是调用HAL库对应的函数HAL_ADC_IRQHandler清除中断标志等操作。 $ l" J; O- M. k$ K8 W1 }
. @' o9 y O$ _& c & t$ n4 H) t# v) S: }# M |
刘氓兔的杂谈【001】-片上USB 高速PHY
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32F765@216MHz跑NES模拟器【代码】【视频】
基于STM32F7实现ADC软件触发+轮询采集
基于STM32F7进行ADC采集解决更新问题
基于STM32F7使用定时器经验分享
实现基于STM32F7中周期采集