距离上次调试STM32的ADC已经过去一段时间了,近一段时间有用到ADC,在原理基础上,增加通道,将以前文章翻出来,其实原本是想在项目代码直接增加代码段,来实现功能的,但是调试时发现,工程代码涉及硬件比较复杂,无法解耦时ADC没调通,还是硬件问题,所以只能将之前文章拿出来,再一步步实验。
本次实验环境不变,不过看自己先行文章的时候,感觉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都行
本次实验是建立再之前的文章上的,一方面可见,记录的重要性,一方面只要一看,知道大致步骤了,就有方向了。
先行文章:软件stm32cubeIDE下使用STM32F103的ADC+DMA测量-基础样例
在使用ADC之前,还是要知道ADC连接哪个引脚的,如下图所示,是F103的ADC连接情况,具体型号请根据单片机手册来。
发现一个一个看,太难受了,直接全部打印出来,这块需要扩容输出的buffer;另外,我们用4个数组进行接收,接收ADC的数值也需要改变。
(1)将输出字符加多
(2)将打印的代码:一次性打印全
(3)更改数组数组部分,
定义的数组
以及函数的start
编译后,本次加入测试的数据,通过串口打印,我们直接接入3.3V和GND,以此来测试是否达到效果,基准电压位3.3V,相当于测满载与空值。
代码:https://download.csdn.net/download/qq_22146161/86555431
调试的时候,没太注意,发现串口一直没有输出,按两次复位后,发现卡死了,这是一部分是代码,没写全,一部分可能数组给小了。
现象如下。
解决办法1:增加数组量。
解决办法2:变量打印时要一一对应。
在生成代码的时候,先看了下,每一块代码是否都在“BEGIN”和“END”之间,如果不是,那么在生成代码时,会删掉那些代码,这部分还是需要小心的。
记录时好的,可以帮助记录,过了多少时间,复查还是挺不错的。