【STM32学习】标准库实现STM32 ADC采集1路、2路、多路

目录

ADC采集

ADC配置步骤

STM32F103C8T6的ADC

输入通道

​编辑

1路ADC(A4 ADC 通道4)

1路ADC源码代码链接:

2路ADC(A4 ADC 通道4、A5 ADC 通道5)基于DMA实现

多路ADC实现采集


ADC采集

ADC配置步骤
  • 使能GPIO时钟和ADC时钟,设置引脚为模拟输入
  • 设置ADC的分频因子
  • 初始化ADC参数,包括ADC工作模式,规则序列等
  • 使能ADC并校准
  • 触发AD转换,读取AD转换值
STM32F103C8T6的ADC

根据中文参考手册介绍,STM32F103C8T6单片机有2个12位ADC,共有18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

输入通道

内外部共18个,16个GPIO,1个内部温感,1个内部参考电压。

1路ADC(A4 ADC 通道4)

ADC初始化代码:

void Init_adc(void)
{
	/*
	1. **开启RCC时钟**:包括ADC和GPIO的时钟。
	2. **配置GPIO**:将GPIO配置为模拟输入模式。
	3. **配置多路开关**:将左边的通道接入到规则组或注入组中。
	4. **配置ADC转换器**:设置ADC的工作模式、数据对齐方式、外部触发方式等。
	5. **启动ADC和DMA**:调用相关函数使能ADC和DMA,开始数据采集和传输。
	*/
	GPIO_InitTypeDef GPIO_InitStruct;
	ADC_InitTypeDef ADC_InitStruct;
	ADC_DeInit(ADC1); //将外设 ADC1 的全部寄存器重设为缺省值
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA,ENABLE); // 开启RCC时钟
	
	// 配置ADC时钟
	RCC_ADCCLKConfig(RCC_PCLK2_Div6); // 6分频,72/6
	
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AIN; // 模拟输入
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;			//	|GPIO_Pin_5
	GPIO_Init(GPIOA,&GPIO_InitStruct);//配置GPIO
	
	ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; // 持续模式
	ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;	// 向右对齐模式
	ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;	// 不使用外部触发模式
	ADC_InitStruct.ADC_Mode = ADC_Mode_Independent; // 独立ADC模式
	ADC_InitStruct.ADC_NbrOfChannel = 1;	// 总共两个通道
	ADC_InitStruct.ADC_Scan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值