STM32 ADC在DMA中断模式下多通道数据采集

STM32 ADC在DMA中断模式下多通道数据采集

ID:38202107

大小:19.71 KB

页数:6页

时间:2019-05-28

STM32 ADC在DMA中断模式下多通道数据采集_第1页
STM32 ADC在DMA中断模式下多通道数据采集_第2页
STM32 ADC在DMA中断模式下多通道数据采集_第3页
STM32 ADC在DMA中断模式下多通道数据采集_第4页
STM32 ADC在DMA中断模式下多通道数据采集_第5页
资源描述:

《STM32 ADC在DMA中断模式下多通道数据采集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本程序实现STM32DMA中断模式下ADC多通道数据采集,并经过简单的均值滤波,亲测可用。若有错误之处,希望读者指出,大家共同学习,一起进步!ADC.C文件vu16AD_Value[N][M];//[50][4]用来存放ADC转换结果,也是DMA的目标地址vu16After_filter[M];//用来存放求平均值之后的结果vu16Vtemp_sensor[M];//电压转换完成后的实际电压值//初始化ADC//这里我们仅以规则通道为例//我们默认将开启通道0~3voidAdc_Init(void){ADC_InitType

2、DefADC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA

3、RCC_APB2Periph_ADC1,ENABLE);//使能ADC1通道时钟/*ConfigureADCCLKsuchasADCCLK=PCLK2/6*/RCC_ADCCLKConfig(RCC_PCLK2_Div6);//72M/6=12,ADC最大时间不能超过14M//PA0/1/2/3作为模拟通道输入引脚GPIO_In

4、itStructure.GPIO_Pin=GPIO_Pin_0

5、GPIO_Pin_1

6、GPIO_Pin_2

7、GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//模拟输入引脚GPIO_Init(GPIOA,&GPIO_InitStructure);ADC_DeInit(ADC1);//将外设ADC1的全部寄存器重设为缺省值/*ADC1configuration------------------------------------------------------*

8、/ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在独立模式ADC_InitStructure.ADC_ScanConvMode=ENABLE;//扫描模式,各个通道均扫描完后EOC才置位DISABLE;//模数转换工作在单通道模式ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;//ENABLE连续转换模式DISABLE模数转换工作在单次转换模式ADC_InitStructure.ADC_

9、ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐ADC_InitStructure.ADC_NbrOfChannel=M;//1;//顺序进行规则转换的ADC通道的数目ADC_Init(ADC1,&ADC_InitStructure);//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器//为了能够正确配置每一个

10、ADC通道,在调用ADC_Init()之后,必须调用ADC_ChannelConfig()//来配置每个所使用通道的转换次序和采样时间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_Samp

11、leTime_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开始工作/*EnableADC1resetcalibarationregister*/ADC_ResetCalibration(ADC1);//重置指定的

12、ADC1的校准寄存器/*ChecktheendofADC1resetcalibrationregister*/while(ADC_GetResetCalibrationStatus(ADC1));//获取ADC1重置校准寄存器的状态,设置状态则等待/*StartADC1calibarati

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。