ADC的硬件使用基础

这篇博客介绍了STM32F103单片机的ADC接口及其与普通IO端口的区别,强调了ADC的12位分辨率和16个外部通道。内容还涉及如何利用DMA进行自动数据传输,降低了软件处理的复杂性,并提供了关于配置存储器映像和使用特定寄存器的指导。通过DMA,可以实现对ADC数值的连续无中断读取,提高系统效率。
摘要由CSDN通过智能技术生成

硬件基础

ADC与普通IO端口模式的的区别

在这里插入图片描述

STM32f103上的ADC接口

  • STM32F103单片机有2个模数转换器一一ADC(多通道多线程时轮流进行模数转换并传入数据)
  • 每个ADC为12位分辨率(读出数据的位长度,0-3.3V可分12个电位)
  • 2个ADC共用16个外部通道(单片机的ADC输入引脚,如下图,stm32f103只使用了10个)
  • 2个ADC都可使用DMA进行操作(谁会用ADC不搭配DMA啊?)
    在这里插入图片描述

库文件准备

  • 如果是一号开发板,建议先将can.c文件删除防止 复用?
  • Basic中加入adc.c
  • Lib中加入adc.c
  • 如果使用了DMA进行通信,还要在Lib中加入dma.c

DMA的使用优势

DMA拥有类似于”自动轮询“的机制
因而不用在程序中专门写一段
反复读取 或 中断读取 的函数来读取ADC的数值
(当然,需要软件编译的支持)

存储器映像

有类似于DMA这样
不认某些寄存器的定义头文件?
或者
头文件定义不全

的情况

首先在芯片参考手册中找到
存储器映像表
在表中找到跳转到其页面
对用要使用功能的寄存器位置(如果是功能位也一样)

使用如下语句

#define ADC1_DR_Address			((unit32_t)0x4001204C)

直接在对应的头文件中定义即可使用(你要跳到stm32f10x_it.c也行,自己搞得懂引用,自引用与复引用及其他宏定义的关系,想怎么作就怎么作(虽然这里一个简单的引用应该就完事了))
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值