(5)蓝桥杯嵌入式——ADC

(1)个人习惯

会新建单独的 ADC.c 和 ADC.h 放到HARAWARE文件夹下

(2)准备

  • 一、基本特点

    • 1、是12位的ADC
      2、有3个控制器
      3、有16个外部通道
      4、可产生中断
      5、扫描模式
      6、采样时间可以按通道编程
      7、数据存储器(左对齐)(右对齐)
      8、转化时间(最大1us)
      9、主要用独立模式
  • 二、单次与连续与扫描转换

    • 单次:ADC只执行一次(下一次转化需要手动开启)
      多次:ADC会自动开启下一次的转化
      扫描:ADC扫描所有被选择的通道
      (一个通道被转化完成后,EOC(转换结束)标志被设置)
  • 三、规则通道与注入通道

    • 1、注入通道最多 4个
      2、规则通道最多16个
  • 四、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)
第四个入口参数则代表单次采样的时钟周期数(周期数越大,采样出来的信号就约准确)

(8)采样时间、采样周期、采样频率计算方法

采样时间、采样周期、采样频率计算方法

猜你喜欢

转载自blog.csdn.net/m0_46278925/article/details/113409247