STM32-ADC在DMA中断模式下多通道数据采集(共6页).docx
《STM32-ADC在DMA中断模式下多通道数据采集(共6页).docx》由会员分享,可在线阅读,更多相关《STM32-ADC在DMA中断模式下多通道数据采集(共6页).docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上本程序实现STM32 DMA中断模式下ADC多通道数据采集,并经过简单的均值滤波,亲测可用。若有错误之处,希望读者指出,大家共同学习,一起进步!ADC.C文件vu16 AD_ValueNM; /504用来存放ADC转换结果,也是DMA的目标地址vu16 After_filterM; /用来存放求平均值之后的结果vu16 Vtemp_sensorM; /电压转换完成后的实际电压值/初始化ADC/这里我们仅以规则通道为例/我们默认将开启通道03 void Adc_Init(void) ADC_InitTypeDef ADC_InitStructure; GPIO_Init
2、TypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE ); /使能ADC1通道时钟/* Configure ADCCLK such as ADCCLK = PCLK2/6 */ RCC_ADCCLKConfig(RCC_PCLK2_Div6); /72M/6=12,ADC最大时间不能超过14M/PA0/1/2/3 作为模拟通道输入引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_P
3、in_2|GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;/模拟输入引脚GPIO_Init(GPIOA, &GPIO_InitStructure);ADC_DeInit(ADC1); /将外设 ADC1 的全部寄存器重设为缺省值/* ADC1 configuration -*/ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;/ADC工作模式:ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode = ENABLE;/扫描模式,各个通道
4、均扫描完后EOC才置位DISABLE;/模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode =ENABLE; /ENABLE连续转换模式DISABLE模数转换工作在单次转换模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;/转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;/ADC数据右对齐ADC_InitStructure.ADC_NbrOfChannel = M;/
5、1;/顺序进行规则转换的ADC通道的数目ADC_Init(ADC1, &ADC_InitStructure);/根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器 /为了能够正确配置每一个ADC通道,在调用ADC_Init()之后,必须调用ADC_ChannelConfig()/来配置每个所使用通道的转换次序和采样时间ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_1,2,ADC_SampleTi
6、me_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_2,3,ADC_SampleTime_55Cycles5);ADC_RegularChannelConfig(ADC1,ADC_Channel_3,4,ADC_SampleTime_55Cycles5);/ 开启ADC的DMA支持(要实现DMA功能,还需独立配置DMA通道等参数)ADC_DMACmd(ADC1, ENABLE);ADC_Cmd(ADC1, ENABLE);/使能指定的ADC1,ADC开始工作/* Enable ADC1 reset calibaration regis
7、ter */ ADC_ResetCalibration(ADC1);/重置指定的ADC1的校准寄存器/* Check the end of ADC1 reset calibration register */while(ADC_GetResetCalibrationStatus(ADC1);/获取ADC1重置校准寄存器的状态,设置状态则等待/* Start ADC1 calibaration */ADC_StartCalibration(ADC1);/开始指定ADC1的校准状态/* Check the end of ADC1 calibration */while(ADC_GetCalibra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 ADC DMA 中断 模式 通道 数据 采集
限制150内