硬件基础
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也行,自己搞得懂引用,自引用与复引用及其他宏定义的关系,想怎么作就怎么作(虽然这里一个简单的引用应该就完事了))