一 单通道采样
参阅资料:
《STM32库开发实战攻略》
原理性质的东西仍是少讲,由于上面那本书里边解说的很详细了,直接来看硬件电路图
这儿运用的是3362电位器(10K),即用STM32来丈量PB0和GND两头的电压,这样的电路规划比较简单也简单了解,可是存在必定的坏处,下面给出《STM32库开发实战攻略》上面配套的硬件电路图
假如规划电路图的话,能够参阅这种思路。
我的收成
1 引脚初始化的时分需求留意
每一个ADC通道都对应一个GPIO引脚,看图中的ADC123_IN10,标明这个引脚(PC0)能够装备为ADC1的通道10,或者是ADC2的通道10,或者是ADC3的通道10,这个当地非常重要,涉及到后边ADC初始化时函数的调用。
比方当咱们使能ADC时,咱们调用的函数是
ADC_Cmd();1
假如咱们运用的是ADC1,那么上面函数的写法就应该是
ADC_Cmd(ADC1,ENABLE);1
相应的假如是ADC2,那么上面函数的写法便是
ADC_Cmd(ADC2,ENABLE);1
别的需求留意的是,咱们这儿的ADC运用了DMA,所以假如你运用的是ADC1,那么对应的DMA就应该是DMA1的通道1
假如运用的是ADC2或者是ADC3就需求自己去查找手册,看看对应的是哪个DMA的那个通道。
在后边上传的程序中能够看到DMA初始化的时分有这么一条句子
DMA_Init(DMA1_Channel1);1
这便是初始化DMA1的通道1
相应的
DMA_Cmd(DMA1_Channel1,ENABLE);1
便是使能DMA1的通道1
总结一句,装备的IO口不同,对应ADC和DMA就不同。
在单通道的ADC采样中,留意上面这一个点就能够了,可是多通道采样还需求留意其他的一些当地
二 多通道采样
仍是看上面的电路图
这儿咱们假定运用PB0和PC0端口来收集电压。
STM32有三个ADC,每个ADC对应16个通道,这儿咱们仅仅用其间的两个通道来做阐明。
在程序中PB0设置为ADC1的通道8,PC0设置为ADC1的通道10。
需求留意的几个点:
1 引脚的装备,在上面现已提到
2 ADC形式的一些装备
对ADC形式的装备主要是经过对ADC_InitTypeDef结构体成员的初始化来完结的。
ADC_InitTypeDefADC_InitStructure;1
ADC_InitStructure.ADC_ScanConvMode=ENABLE;1
结构体的这个成员主要是用来设置ADC的扫描形式,咱们运用通道8和通道10,当然要答应ADC进行通道的扫描
ADC_InitStructure.ADC_NbrOfChannel=2;1
这个结构体成员是用来标明要转化的通道数目,这儿咱们运用通道8和通道10两个通道,那么这个值必定是2。
ADC_RegularChannelConfig();1
这是一个非常重要的函数
这是从《STM32库函数运用手册》中截到的图,关于函数详细参数的运用能够去看该手册。
下面结合程序来看一下这个函数的运用
函数的第三个参数是用来设置采样次序的,看咱们的程序,也便是说咱们设置ADC1的通道8先进行采样,接着ADC1的通道10再进行采样。
写到这儿,基本上多通道ADC采样程序就差不多了,至于详细的DMA运用能够参阅我后边上传的程序。