STMCU小助手
发布时间:2022-1-28 18:36
stm32 ADC 简介ADC通道与GPIO对应表(图片来自整点原子STM32F1开发指南库函数版本)
9 p: C9 w" P8 K [5 S 规则通道组和注入通道组
所谓规则通道组和注入通道组其实应该就是通道的分组吧,按照OOP的思想来理解,通道组是一个基类,注入通道组和规则通道组派生自通道组这个基类,通道组这个基类中包含了一个保存各个通道的数组. 为什么要对通道进行分组呢,这个有待深究,以后再说. ADC相关的寄存器 ADC_CR1/ Q9 u1 L; r6 b 各个位描述如下图:- p, K+ \* q, v# R0 B1 v; s& B 4 C: a: |) q; _7 _: Y% i" \1 R7 _
ADC_CR2/ Z8 H6 {0 |& O7 J 各个位描述如下图:: u; s6 _! O0 m ?7 d
各个位描述如下图:, S/ f, @& }$ ]( O) X- k
ADC规则序列寄存器(ADC_SQR1~3)
这个没什么好说的,用来存放AD转换后的结果 ADC状态寄存器(ADC_SR)
通过库函数配置ADC1通道1进行AD转换 查看手册可以知道ADC1通道1对应着PA1,如下图7 o& Z I4 z4 ~4 B0 |) J
1.外设使能
4 [4 C. L7 ~/ F7 N/ D 2.复位ADC1,同时设置ADC1的分频因子
3.初始化ADC1参数,设置ADC1的工作模式以及规则序列的相关信息.. H, d* W$ a; n1 z, N& ^; c$ v$ U void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);// ADC初始化 4.使能ADC并校准 void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState); //使能指定的ADC# \0 r8 ?% D7 ?' w1 l void ADC_ResetCalibration(ADC_TypeDef* ADCx);//复位校准 while(ADC_GetResetCalibrationStatus(ADCx));//等待复位校准结束5 D8 q- j' z( i" W# T void ADC_StartCalibration(ADC_TypeDef* ADCx);//执行ADC校准 while(ADC_GetCalibrationStatus(ADCx));//等待AD校准结束 3 T" }; x* |$ q" m8 T% g" @. i( o 5.设置规则序列1里面的通道,读取ADC的值 void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime); //设置规则序列通道以及采样周期6 t6 i \! i6 Y& Z void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);//允许软件开启ADC转换 while(!ADC_GetFlagStatus(ADCx,ADC_FLAG_EOC));//等待转换结束 uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);//获取转 换结果数据 MDK5中实现代码
) b4 e* Q8 z. S# }- b |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版