步骤
打开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工作模式为硬件触发、自动重装

最低0.47元/天 解锁文章
1189

被折叠的 条评论
为什么被折叠?



