2025-11-08 05:33:50
STM32的ADC库就是用来控制模数转换器的。先初始化外设,设置GPIO为模拟输入,选好通道,再让ADC工作。采样完数据后,从寄存器里读出来。这样就能把电压转成数字了。用户可能遇到的问题是外设和代码不配合,导致数据不准,比如没开时钟或者通道选错。这时候得检查系统时钟配置和寄存器地址。比如STM32F103的ADC1,默认时钟是14MHz,采样时间最长2.5个周期。如果设置成16个周期,采样时间就是40μs。这样每秒能采样25万次。数据是12位,1V3V电压对应0-4095。
为什么得先初始化外设?因为ADC是外设,得先让CPU知道要用的资源。比如STM32F103的ADC1,默认时钟是14MHz,采样时间最长2.5个周期。如果设置成16个周期,采样时间就是40μs。这样每秒能采样25万次。数据是12位,1V3V电压对应0-4095。用户可能遇到外设和代码不配合,数据不准,比如没开时钟或者通道选错。这时候得检查系统时钟配置和寄存器地址。比如ADC采样时间设置不对,会导致数据抖动。比如设置采样时间为1个周期,实际需要5个周期,结果数据就会波动。这时候得调整寄存器值,比如从0x0F改成0x1F。
本题链接: