咱们在这里设置ADC为接连转化形式,惯例转化序列中有两路转化通道,别离是ADC_CH10(PC0)和ADC_CH16(片内温度传感器)。由于运用了主动多通道转化,数据的取出作业最适合运用DMA方法取出,so,咱们在内存里拓荒了一个u16 AD_Value[2]数组,并设置了相应的DMA模块,使ADC在每个通道转化完毕后发动DMA传输,其缓冲区数据量为2个HalfWord,使两路通道的转化成果主动的别离落到AD_Value[0]和AD_Value[1]中。
然后,在主函数里,就无需手动发动AD转化,等候转化完毕,再取成果了。咱们能够在主函数里随时取AD_Value中的数值,那里永远都是最新的AD转化成果。
假如咱们界说一个更大的AD_Value数组,并调整DMA的传输数据量(BufferSize)能够完成AD成果的循环行列存储,然后能够进行各种数字滤波算法。
接着,取到转化成果后,依据V=(AD_Value/4096)*Vref+的公式能够算出相应通道的电压值,也能够依据
经过从头界说putchar函数,及包括”stdio.h”头文件,咱们能够便利的运用规范C的库函数printf(),完成串口通讯。
相关的官方例程,能够参阅FWLib V2.0的ADCADC1_DMA和USARTprintf两个目录下的代码。
本代码比如是根据万利199的开发板EK-STM32F完成,CPU=STM32F103VBT6