版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32ADC多通道转换描述:用ADC连续采集11路模拟信号,并由DMA传输到内存。ADC配置为扫描并且连续转换模式,ADC的时钟配置为12MHZo在每次转换结束后,由DMA循环将转换的数据传输到内存中。ADC可以连续采集N次求平均值。最后通过串II传输出最后转换的结果。程序如下:1ncludestiii32flOx.h这个头文件包括STM32F10X所有外閑寄存器、位、内存映射的定义1nclude”eval.h”头文件(包括串丨1、按键、LED的函数声明)1ncludeSysTickDelay.il1ncludeUART_INTERFACE.h1nclude#defineN50每通道采50
2、次特defineM12为12个通道ul6AD_ValueNM;用来存放ADC转换结果,也是DMA的目标地址nl6Aftei_filteiM;/用來冇放求平均值之后的结果lilti;voidGPIO_Configuration(void)GPIO_ImtTypeDefGPIO_IiiitStiiicture;GPIO_hutSu-uctuie.GPIO_Pin=GPIO_Pin_9;GPIO_ImtSuuctuie.GPIO_Mode=GPIO_Mode_AF_PP;因为USART1管脚是以复用的形式接到GPIOLI上的,所以使用复用推挽式输出GPIO_IiutSuuctuie.GPIO_Spe
3、ed=GPIO_Speed_50MHz;GPIO_Imt(GPIOA,&GPIO_InitStmcture);GPIO_IiutSti-uctuie.GPIO_Pin=GPIO_Pm_10;GPIO_IiutStmctuie.GPIO_Mode=GPIO_ModjIN_FLOATING;GPIO_Imt(GPIOA,&GPIO_InitStnicture);/PAO/1/2作为模拟通道输入引脚GPIOIiutStiuctuie.GPIOPin=GPIOPin0|GPIOPinllGPIOPin2IGPIOPin3;GPIO_ImtSuuctuie.GPIO_Mode=GPIO_ModjAIN;
4、模拟输入引脚GPIO_Imt(GPIOA,&GPIOJnitStnicture);/PB0/1作为模拟通道输入引脚GPIO_IiutSti-uctuie.GPIO_Pin=GPIO_Pm_0|GPIO_Pm_l;GPIO_ImtSuuctuie.GPIO_Mode=GPIO_ModjAIN;/模拟输入引脚GPIO_Imt(GPIOB,&GPIO_InitStmctme);/PCO/1/2/3/4/5作为模拟通道输入引脚GPIO_InitStiiictuie.GPIO_PinGPIOPinOlGPIOPin1IGPIOPin2|GPIOPin3IGPIOPin4IGPIOPin5;GPIO_Im
5、tSuuctuie.GPIO_Mode=GPIO_ModjAIN;模拟输入引脚GPIO_Imt(GPIOC,&GPIO_InitStRictuie);voidRCC_Coiifiguiation(void)EnorStatusHSEStartUpStatus;RCC.DelnitQ;/KCC系统复位RCC_HSEConfig(RCC_HSE_ON);开启HSEHSEStartUpStatus=RCC.WaitForHSEStaitUp();/等待HSE准备好if(HSEStartUpStatus=SUCCESS)FLASH_PrefetchBuffeiCmd(FLASH_PiefetcliBu
6、ffer-Enable);/EnablePrefetchBufferFLASH_SetLatencv(FLASH_Latencv_2);/Set2LatencycyclesRCC_HCLKConfig(RCCSYSCLK_Div1);/AHBclock=SYSCLKRCC_PCLK2Config(RCC_HCLK_Divl);/APB2clock=HCLKRCC_PCLKlConfig(RCC_HCLK_Div2);/APB1clock=HCLK2RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_6);/PLLCLK=12MHz*6=72MHzRC
7、C_PLLCmd(ENABLE);/EnablePLLwhileCRCC.GetFlagStatusCRCC.FLAG.PLLRDY)RESET);/WaittillPLLisreadyRCC_SYSCLKConfig(RCC_SYSCLKSouice_PLLCLK);/SelectPLLassystemclocksourcewhile(RCC_GetSYSCLKSouice()!=0 x08);/WaittillPLLisusedassystemclocksourceRCC.APB2PenphClockCmd(RCC_APB2Penph_GPIOA|RCC.APB2Periph_GPIOB|
8、RCC_APB2Periph.GPIOC|RCC_APB2Penph_ADC1|RCC_APB2Penph_AFIO|RCC_APB2Penph.USART1,ENABLE);使能ADC!通道时钟,各个管脚时钟RCC.ADCCLKConfig(RCC_PCLK2_Div6);/72M/6=12.ADC最人时间不能超过14MRCC.AHBPeiiphClockCmd(RCC.AHBPenpli_DMA1.ENABLE);/使能DMA传输voidADCl_Configuiation(void)ADC_InitTypeDefADC_InitStnicnire;ADC_DeInit(ADCl);/W外
9、设ADC1的全部寄存器重设为缺省值ADCJmtStnicture.ADC.Mode=ADC.ModeJndependent;/ADC工作模式【ADC1和ADC2工作在独立模式ADCJnitStnicture.ADC.ScanConvMode=ENABLE;/模数转换丁作在扫描模式ADC_InitStmcture.ADC_ContinuousConvMode=ENABLE;模数转换匸作在连续转换模式ADC_InitStnictuie.ADC_ExternalTngConv=ADC_ExternalTngConv_None;外部触发转换关闭ADC_ImtStmctuie.ADC_DataAlign
10、=ADC_DataAlign_Right;/ADC数据右对齐ADCJnitStnicture.ADC-NbiOfChaimel=M;顺序进行规则转换的ADC通道的数目ADCJmt(ADCl,&ADC_InitSuuctuie);根据ADC_ImtStiiict中指定的参数初始化外设ADCx的寄存器设置指定ADC的规则组通道,设置它们的转化顺序和采样时间/ADC1,ADC通道x,规则采样顺序值为y,采样时间为239.5周期ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieLO,1,ADC_SampleTime_239Cycles5);ADC_RegulaiCham
11、ielConfig(ADC1,ADC_ChaniieLl,2,ADC_SampleTime_239Cycles5);ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieL2,3,ADC_SampleTime_239Cycles5);ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieL3,4,ADC_SampleTime_239Cycles5);ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieL8,5,ADC_SampleTime_239Cycles5);ADC_RegulaiChamielConfi
12、g(ADC1,ADC_ChaniieL9,6,ADC_SampleTime_239Cycles5);ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieLl0,7,ADC_SampleTune_239Cvcles5);ADC_RegularChaiiiielConfig(ADC1,ADC_ChaniieLl1,&ADC_SampleTime_239Cycbs5);ADC_RegulaiChaniielConfig(ADC1,ADC_ChaniieL12,9,ADC_SampleTune_239Cvcles5);ADC_RegulaiChaimelConfig(AD
13、C1,ADC_ChaimeL13,10,ADC_SampleTime_239Cycbs5);ADC_RegulaiChamielConfig(ADC1,ADC_ChaniieL14,11,ADC_SampleTune_239Cvcles5);ADC_RegulaiChaimelConfig(ADC1,ADC_ChaimeLl5,12,ADC_SampleTime_239Cycbs5);/开启ADC的DMA支持(要实现DMA功能,还需独立配置DMA通道等参数)ADC_DMACmd(ADC1,ENABLE);ADC_Cmd(ADCl,ENABLE);使能指定的ADC1ADC_ResetCalibi
14、ation(ADCl);/复位指定的ADC1的校准寄存器while(ADC.GetResetCalibrationStatus(ADC1);/获取ADC1复位校准寄存器的状态,设置状态则等待ADC.StartCalibiation(ADC1);开始指定ADC1的校准状态while(ADC_GetCalibrationStatus(ADCl);获取指定ADC1的校准程序,设置状态则等待voidDMA_Configuration(void)DNfA_InitTypeDefDMA_IintStRictuie;DMA_Denut(DNIACChaiinell);/将DMA的通道1寄存器重设为缺省値DM
15、A_InitSu-uctuie.DMA_PeripheialBaseAddi=(u32)&ADC1-DR;/DMA外设ADC基地址DMA_IiiitSti-uctuie.DMA_MemoiyBaseAddr=(u32)&AD_Value;/DMA内存基地址DMA_InitSuiictuie.DMA_DIR=DMA_DIR_PenpheialSRC;内存作为数据传输的目的地DNlA_InitSuiictuie.DNIA_BufferSize=N*M;/DMA通道的DMA缓存的人小DMA_InitSti-uctuie.DMA_PeripheialInc=DMA.Penpheiallnc.Disab
16、le;/外设地址寄存器不变DNlA_InitStnictuie.DNfA_MemoiyInc=DMA.MemoiyliicEnable;内存地址寄存器递增DMA_IiutSu-uctuie.DMA_PenpheialDataSize=DNIA_PenpheralDataSize_Half-7oid;数据宽度为16位DMA_IiiitSti-uctufe.DMA_MemoiyDataSize=DMA_MemoiyDataSize_HalfW7oid;/数据宽度为16位DMA_InitSti-uctuie.DMA_Mode=DMA_Mode_Cucular;匸作在循环缓存模式DNlA_InitSt
17、mcture.D2vIA_Pilontv=DMA_Piiority_High;/DMA通道x拥有高优先级DMA_InitSuuctuie.DNIA.M2M=DMA_M2M_Disable;/DMA通道x没有设置为内存到内存传输DMA_Imt(DMAl_Cluinnel1,&DMA_InitStnicture);根据DMA_LutStmct中指定的参数初始化DMA的通道配置所有外设voidImt_All_Penph(void)RCC_Configuration();GPIO_Configuiation();ADC1_Coiifiguiation();DMA_Configuiation();/US
18、ART1_Coiifiguiation();USART_Configuiation(9600);ul6GetVolt(ul6advalue)letuin(ul6)(advalue*330/4096);/求的结果扩人了100倍,方便卜而求出小数voidfilter(void)fimtsum=0;u8count;foi(i=0;i12;i+)fifoi(count=0;countN;count+)fisum+=AD_Valuecount1;Aftei_filteri=sunvN;sum=0;mtmam(void)ul6valueMJ;mit_All_PenpliQ;SysTick_Imtaize();ADC_SoftwaieStartConvCmd(ADC1.ENABLE);DMA_Cmd(DMA1.Channel1,ENABLE);启动DMA通道while(l)while(USART.GetFlagStatus(USART1,USART_FLAG.TXE)=RESET);/等待传输完成否则第一位数据容易丢失filterQ;fbi(i=0;i12;i-H-)v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年食品加工安全操作专项试卷及答案解析
- 观察和处置患者用药与治疗反应的制度
- 木质门安装施工方案
- 智能化运维2025年城市地下管廊智慧中心建设可行性研究
- 2026年海洋能发电公司客户服务质量奖惩制度
- 2026年海洋能发电公司财务审计与监督管理制度
- 初中语文跨文化教学与语言交际能力培养的对比研究课题报告教学研究课题报告
- 微循环改善研究-洞察与解读
- 支付场景中的链上身份验证-洞察与解读
- 低温固化材料研发-洞察与解读
- 超声波成像技术突破-全面剖析
- 水电与新能源典型事故案例
- 2024届新高考语文高中古诗文必背72篇 【原文+注音+翻译】
- DZ∕T 0217-2020 石油天然气储量估算规范
- DL-T439-2018火力发电厂高温紧固件技术导则
- 2024年首届全国“红旗杯”班组长大赛考试题库1400题(含答案)
- 网站对历史发布信息进行备份和查阅的相关管理制度及执行情况说明(模板)
- 工资新老方案对比分析报告
- HGT 2520-2023 工业亚磷酸 (正式版)
- 《公路工程质量检验评定标准 第二册 机电工程》2182-2020
- 《无人机组装与调试》第3章 无人机装配工艺
评论
0/150
提交评论