CubeMx配置生成代码系列(三) DMA方式ADC数据采集

cubemx配置dma方式进行adc数据采集

前言

上一期我们介绍如何利用CnbeMx工具配置STM32的串口空闲+dma方式接收不定长数据,这一期我们介绍使用dma方式进行adc的数据采集。个人测试使用,欢迎大家一期探讨

一、ADC是什么?

ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。

二、配置步骤

1.CubeMx配置(关于时钟、串口等配置参考上一张内容),开启ADC。几路转换则开启几路
CubeMx配置生成代码系列(三) DMA方式ADC数据采集
2.ADC配置
CubeMx配置生成代码系列(三) DMA方式ADC数据采集

3.DMA配置
CubeMx配置生成代码系列(三) DMA方式ADC数据采集

三.代码更改

1.在while循环中开启DMA传输
CubeMx配置生成代码系列(三) DMA方式ADC数据采集

2.调试过程遇到的问题
若配置ADC循环转化+DMA循环传输的话,调用一次HAL_ADC_Start_DMA()函数则自动永远转化并传输。若开启DMA中断的话则程序会一直进入DMA中断。HAL_ADC_Start_DMA()函数会开启DMA的所有中断(传输完成、传输一半和传输错误)。

总结

若平时使用还是配置为不循环转换+DMA单次传输比较好。(个人调试经验,欢迎大家指正)