蓝桥杯嵌入式——ADC
(1)个人习惯
会新建单独的 ADC.c 和 ADC.h 放到HARAWARE文件夹下
(2)准备
-
一、基本特点
- 1、是12位的ADC
2、有3个控制器
3、有16个外部通道
4、可产生中断
5、扫描模式
6、采样时间可以按通道编程
7、数据存储器(左对齐)(右对齐)
8、转化时间(最大1us)
9、主要用独立模式
- 1、是12位的ADC
-
二、单次与连续与扫描转换
- 单次:ADC只执行一次(下一次转化需要手动开启)
多次:ADC会自动开启下一次的转化
扫描:ADC扫描所有被选择的通道
(一个通道被转化完成后,EOC(转换结束)标志被设置)
- 单次:ADC只执行一次(下一次转化需要手动开启)
-
三、规则通道与注入通道
- 1、注入通道最多 4个
2、规则通道最多16个
- 1、注入通道最多 4个
-
四、ADC时钟配置:不要让ADC时钟超过14MHz,否则可能不准
-
五、转化时间=采样时间+12.5
所以最小转化时间1us(ADC时钟=14MHz,采样时间为1.5周期下得到)
(3)硬件连接
可变电阻的另一端连接的是PB0引脚,同时我们查看下stm32f103rbt6的数据手册,发现PB0引脚可复用成ADC_IN8。
我们可以通过软件把PB0设置成ADC输入引脚,就可以采集PB0引脚上的电压数据了。
(4)编写 void ADC_init(void) 初始函数
(5)编写 u16 Get_Adc(u8 channel) 读取函数
(6)编写 u16 Get_Adc(u8 channel) 处理函数
(7)问题
问题一
ADC时钟超过14MHz,否则可能不准。
而6分频刚好为12MHz =72MHz / 6,没有超过12MHz
问题二
第一个入口参数为选的配置的ADC
第二个入口参数为选择配置的通道
第三个入口参数则配置ADC编号(例如使用ADC1,那么就写1)
第四个入口参数则代表单次采样的时钟周期数(周期数越大,采样出来的信号就约准确)