【STM32】 AD多通道+DMA转运

步骤

打开GPIO、ADC、DMA时钟
初始化GPIO的PA0~4为模拟输入模式
初始化ADC为软件触发、连续扫描模式
初始化DMA为硬件触发、自动重装

GPIO初始化

	//使能GPIOA时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	//GPIO初始化
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//设置为模拟输入
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);

ADC初始化

在这里插入图片描述
配置输入通道
使用初始化结构体配置ADC工作模式为连续扫描模式

	//使能ADC1时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
	//ADC最大频率为14MHz 72MHz进过6分频为12MHz
	RCC_ADCCLKConfig(RCC_PCLK2_Div6);
	
	//规则组通道配置
	//ADC ADC通道 ADC序列(菜单) 采样时间
	ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);
	ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_55Cycles5);
	ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_55Cycles5);
	ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_55Cycles5);
	//ADC初始化
	ADC_InitTypeDef ADC_InitStructure;
	ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC工作模式设置为独立模式
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC 12位输出到16位寄存器 设置数据对齐方式
	ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//外部触发源选择无外部触发 即软件触发
	ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式
	ADC_InitStructure.ADC_ScanConvMode = ENABLE;//扫描转换模式
	ADC_InitStructure.ADC_NbrOfChannel = 4;//扫描模式下使用的通道数量
	ADC_Init(ADC1, &ADC_InitStructure);
	

DMA初始化

在这里插入图片描述
使用初始化结构体配置DMA工作模式为硬件触发、自动重装

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值