STM32F429 定时器 触发ADC采样,ADC触发DMA搬运

本文讲述作者使用STM32F429芯片做定时器触发ADC采样并且ADC触发DMA搬运的过程。

先说背景,做一个主从通信的程序,主站发码电压调制,从站回码电流调制,平行线通信加了特殊的算法(什么算法就不提了)抗干扰,主站在接收从站回码的时候采用ADC采样的形式,一位采样5次,再通过一定解调算法得到数据。那么,STM32怎么配置呢。

先说ADC初始化及对应通道引脚初始化,代码如下:

ContinuousConvMode一定不要enable,否则后面的采样就不是定时器触发了。

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第1张图片

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第2张图片

每一行代码都有详细的注释,读者看不懂的可以对着数据手册看一遍。

接下来是定时器的初始化,通过定时器3的CH1输出PWM进行触发ADC采样,采样频率位500k

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第3张图片

最后是DMA初始化,DMA采样中断方式,搬运完进中断打状态标志,然后进行处理。

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第4张图片

中断处理函数如下

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第5张图片

以上就是定时器触发ADC采样,并且ADC触发DMA搬运的程序,另外在主循环需要加下面的代码,否则DMA搬运可能停不下来。

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第6张图片

最后是启动采样代码,不要忘了开定时器,而且开定时器要在开ADC之后。

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第7张图片

另外,关于时钟和中断的初始化,尽量在开始初始化一次就ok了

STM32F429 定时器 触发ADC采样,ADC触发DMA搬运_第8张图片

你可能感兴趣的:(STM32,嵌入式,ARM)