CubeMX系列教程——15 adc 中断和DMA

这篇文章将使用ADC的中断和DMA功能采集输入的电压,打开上一章的adc工程,开启 ADC的中断功能,配置如下

CubeMX系列教程——15 adc 中断和DMA

修改ADC的参数配置,使能ADC的连续转换,生成MDK初始化代代码工程。

CubeMX系列教程——15 adc 中断和DMA

在工程中修改如下测试代码,将EOCSelection配置为开启连续转换标识符。默认为生成单次转换完成标识符。如果不修改,会进入adc的err中断回调函数。

CubeMX系列教程——15 adc 中断和DMA

在主函数中添加代码,启动ADC的中断,同时在接收完成回调函数中添加测试代码。

CubeMX系列教程——15 adc 中断和DMA

查看测试结果,输入 0V时的转换结果

CubeMX系列教程——15 adc 中断和DMA

输入3.3V的采集转换结果

CubeMX系列教程——15 adc 中断和DMA

接下来介绍如何使用ADC的DMA功能,打开上一章的ADC工程,开启连续转换功能

CubeMX系列教程——15 adc 中断和DMA

开启DMA功能,配置DMA参数,点击ADD,选择DMA2 Stream 0,因为是单通道采集,所以取消 memory增长的配置,选择循环模式。

CubeMX系列教程——15 adc 中断和DMA

开启DMA中断,并生成MDK

CubeMX系列教程——15 adc 中断和DMA

在工程中,修改代码,使能DMAContinuousrequests

CubeMX系列教程——15 adc 中断和DMA

在主函数中添加测试代码

CubeMX系列教程——15 adc 中断和DMA

CubeMX系列教程——15 adc 中断和DMA

查看测试效果,输入0V和3.3V的结果

CubeMX系列教程——15 adc 中断和DMA

CubeMX系列教程——15 adc 中断和DMA

这里单通道ADC的中断和DMA讲解完毕。