# # 软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例+进阶+增加通道
(1)叙述
距离上次调试STM32的ADC已经过去一段时间了,近一段时间有用到ADC,在原理基础上,增加通道,将以前文章翻出来,其实原本是想在项目代码直接增加代码段,来实现功能的,但是调试时发现,工程代码涉及硬件比较复杂,无法解耦时ADC没调通,还是硬件问题,所以只能将之前文章拿出来,再一步步实验。
(2)测试环境
本次实验环境不变,不过看自己先行文章的时候,感觉IO接线有必要逻辑列出来。
1)IO连线
(1)供电线:给开发板或者单片机供电。 (2)调试用的串口IO :PB10—uart3-TX (用于发送数据) (3)调试用的串口IO :PB11—uart3-RX (本实验单片机不接收,只是初始化) (4)ADC的IO :PA1—通道1 (5)ADC的IO :PA2—通道2 (6)ADC的IO :PA3—通道3 (7)ADC的IO :PA4—通道4(新增加的通道) (8)调试线:下载线,用st-link或者j-link都行
2)硬件环境
- 软件环境:STM32cubeIDE 1.8.0
- 硬件环境:野火-指南者STM32F103VET6
- 硬件配件:j-link,串口转换器,PC
硬件拍照
(3)先行文章
本次实验是建立再之前的文章上的,一方面可见,记录的重要性,一方面只要一看,知道大致步骤了,就有方向了。 先行文章:软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例
(4)操作步骤
(1)查下ADC引脚
在使用ADC之前,还是要知道ADC连接哪个引脚的,如下图所示,是F103的ADC连接情况,具体型号请根据单片机手册来。
(2)下载代码后,先编译一下没有错误继续。
(3)点击配置界面“charger_test_uart3.ioc”,找到ADC选项。
(4)增加通道数与选择,本次整机通道4—PA4
(5)保存生成代码,然后编译。
(6)修改代码部分。
发现一个一个看,太难受了,直接全部打印出来,这块需要扩容输出的buffer;另外,我们用4个数组进行接收,接收ADC的数值也需要改变。
(1)将输出字符加多
(2)将打印的代码:一次性打印全
(3)更改数组数组部分, 定义的数组 以及函数的start
(5)测试数据
编译后,本次加入测试的数据,通过串口打印,我们直接接入3.3V和GND,以此来测试是否达到效果,基准电压位3.3V,相当于测满载与空值。
以下PA1的测试情况:
以下PA2的测试情况:
以下PA3的测试情况:
以下PA4的测试情况
(6)代码链接
代码:https://download.csdn.net/download/qq_22146161/86555431
(7)细节说明
1)单片机卡死
调试的时候,没太注意,发现串口一直没有输出,按两次复位后,发现卡死了,这是一部分是代码,没写全,一部分可能数组给小了。 现象如下。 解决办法1:增加数组量。
解决办法2:变量打印时要一一对应。
2)代码放置位置-放置在块内
在生成代码的时候,先看了下,每一块代码是否都在“BEGIN”和“END”之间,如果不是,那么在生成代码时,会删掉那些代码,这部分还是需要小心的。
(8)总结
记录时好的,可以帮助记录,过了多少时间,复查还是挺不错的。
|