版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
...wd......wd......wd...学号20142014-2015学年第二学期《嵌入式系统》课程设计报告题目:基于STM32的简易数字电压表专业:网络工程班级:网络工程12〔1〕姓名:卢东亚指导教师:冯康成绩:计算机学院2015年5月22日目录TOC\o"1-2"\h\z\u256471.设计内容及要求135781.1.设计内容1151451.2.设计要求1183272.概要设计2274642.1.硬件电路2221352.2.实验板中的连线图2160252.3.STM32介绍3173652.4.主要函数说明828543.设计过程或程序代码10164663.1.设计过程1038163.2.程序代码12272754.设计结果与分析163168参考文献17设计内容及要求设计内容本文以ARM系列的STM32芯片为核心设计了一个简易数字电压表。简易数字电压表采用模数转换思想来实现,通过硬件电路和软件程序相结合,可输出自定义测量电压,通过调节模数转换电位器使在一定范围内可任意改变。输出的电压格式和精度的改变通过软件控制,输出电压的大小的改变通过硬件实现。介绍了的生成原理、硬件电路和软件局部的设计原理。该简易数字电压表具有体积小、价格低、性能稳定、功能齐全的优点。1、将一模拟电压信号输入到A/D转换器的任一通道。2、A/D转换器将输入的模拟电压值转换成数字量。3、根据学习开发板所用A/D转换器的类型,将转换成的数字量通过一定的算法转换成相应的电压值。4、将转换成电压值通过学习开发板上的LCD显示屏进展显示,要求显示一位小数。设计要求利用STM32F103内部A/D及2.8寸TFT液晶屏,设计完成一个数字电压表。要求:数字电压表可测量0-5V输入电压,电压值通过液晶屏显示。工作原理及设计思路:简易数字电压表的设计由A/D转换.数据处理及显示控制等组成。利用STM32F103内部A/D转换器将模拟电压转换成数字量,经STM32F103计算将数字量转换成对应的电压值,并通过液晶屏输出。数字电压表的根本组成局部是A/D变换器+电子计数器。通常,被测直流电压经A/D转换器变为与之成正比的闸门时间,在此闸门时间内计数,用数字显示被测电压值。可见A/D变换器是DVM的核心部件。本课设上采用的是单片A/D转换器〔含模拟电路与数字电路〕集成在一片芯片上,配以LCD或LED数字器件后能显示A/D转换结果的集成电路。它们均属于大规模的集成电路,能以最简的方式构成DVM。在此采用ICL7106A/D转换器。但由于STM32F103内部集成了A/D转换器,所以不需要外围的A/D转换器,这就表达了STM32得集成特性。概要设计硬件电路设计的核心STM32嵌入式处理器的硬件电路如图1所示图1STM32嵌入式处理器的硬件电路实验板中的连线图连线图如图2所示。图2硬件连接图。STM32介绍STM32F103xx增强型系列使用高性能的ARMCortex-M332位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和一个PWM定时器,还包含标准和先进的通信接口:多达2个I2C和SPI、3个USART、一个USB和一个CAN。STM32F103xx增强型系列工作于-40°C至+105°C的温度范围,供电电压2.0V至3.6V,一系列的省电模式保证低功耗应用的要求。完整的STM32F103xx增强型系列产品包括从36脚至100脚的五种不同封装形式;根据不同的封装形式,器件中的外设配置不尽一样。下面给出了该系列产品中所有外设的根本介绍。这些丰富的外设配置,使得STM32F103xx增强型微控制器适合于多种应用场合:●电机驱动和应用控制●医疗和手持设备●PC外设和GPS平台●工业应用:可编程控制器、变频器、打印机和扫描仪●警报系统,视频对讲,和暖气通风空调系统ARM®的Cortex™-M3核心并内嵌闪存和SRAMARM的Cortex-M3处理器是最新一代的嵌入式ARM处理器,它为实现MCU的需要提供了低本钱的平台、缩减的管脚数目、降低的系统功耗,同时提供卓越的计算性能和先进的中断系统响应。ARM的Cortex-M3是32位的RISC处理器,提供额外的代码效率,在通常8和16位系统的存储空间上得到了ARM核心的高性能。STM32F103xx增强型系列拥有内置的ARM核心,因此它与所有的ARM工具和软件兼容。图一是该系列产品的功能框图。内置闪存存储器●高达128K字节的内置闪存存储器,用于存放程序和数据。内置SRAM多达20K字节的内置SRAM,CPU能以0等待周期访问(读/写)。嵌套的向量式中断控制器(NVIC)STM32F103xx增强型内置嵌套的向量式中断控制器,能够处理多达43个可屏蔽中断通道(不包括16个Cortex-M3的中断线)和16个优先级。●紧耦合的NVIC能够到达低延迟的中断响应处理●中断向量入口地址直接进入核心●紧耦合的NVIC接口●允许中断的早期处理●处理晚到的较高优先级中断●支持中断尾部链接功能●自动保存处理器状态●中断返回时自动恢复,无需额外指令开销该模块以最小的中断延迟提供灵活的中断管理功能。外部中断/事件控制器(EXTI)外部中断/事件控制器包含19个边沿检测器,用于产生中断/事件请求。每个中断线都可以独立地配置它的触发事件(上升沿或下降沿或双边沿),能够单独地被屏蔽;有一个挂起存放器维持所有中断请求的状态。EXTI可以检测到脉冲宽度小于内部APB2的时钟周期。多达80个通用I/O口连接到16个外部中断线。时钟和启动系统时钟的选择是在启动时进展,复位时内部8MHz的RC振荡器被选为默认的CPU时钟,随后可以选择外部的、具失效监控的4~16MHz时钟;当外部时钟失效时,它将被隔离,同时会产生相应的中断。同样,在需要时可以采取对PLL时钟完全的中断管理(如当一个外接的振荡器失效时)。具有多个预分频器用于配置AHB的频率、高速APB(APB2)和低速APB(APB1)区域。AHB和高速APB的最高频率是72MHz,低速APB的最高频率为36MHz。自举模式在启动时,自举管脚被用于选择三种自举模式中的一种:●从用户闪存自举●从系统存储器自举●从SRAM自举自举加载器存放于系统存储器中,可以通过USART对闪存重新编程。供电方案●VDD=2.0至3.6V:VDD管脚提供I/O管脚和内部调压器的供电。●VSSA,VDDA=2.0至3.6V:为ADC、复位模块、RC振荡器和PLL的模拟局部提供供电。使用ADC时,VDD不得小于2.4V。●VBAT=1.8至3.6V:当(通过电源开关)关闭VDD时,为RTC、外部32kHz振荡器和后备存放器供电。供电监控器本产品内部集成了上电复位(POR)/掉电复位(PDR)电路,该电路始终处于工作状态,保证系统在供电超过2V时工作;当VDD低于设定的阀值(VPOR/PDR)时,置器件于复位状态,而不必使用外部复位电路。器件中还有一个可编程电压监测器(PVD),它监视VDD供电并与阀值VPVD比拟,当VDD低于或高于阀值VPVD时将产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。需要通过程序开启PVD。电压调压器调压器有三个操作模式:主模式(MR)、低功耗模式(LPR)和关断模式●主模式(MR)用于正常的运行操作●低功耗模式(LPR)用于CPU的停机模式●关断模式用于CPU的待机模式:调压器的输出为高阻状态,内核电路的供电切断,调压器处于零消耗状态(但存放器和SRAM的内容将丧失)该调压器在复位后始终处于工作状态,在待机模式下关闭处于高阻输出。低功耗模式STM32F103xx增强型支持三种低功耗模式,可以在要求低功耗、短启动时间和多种唤醒事件之间达到最正确的平衡。●睡眠模式在睡眠模式,只有CPU停顿,所有外设处于工作状态并可在发生中断/事件时唤醒CPU。●停机模式在保持SRAM和存放器内容不丧失的情况下,停机模式可以到达最低的电能消耗。在停机模式下,停顿所有内部1.8V局部的供电,PLL、HSI和HSE的RC振荡器被关闭,调压器可以被置于普通模式或低功耗模式。可以通过任一配置成EXTI的信号把微控制器从停机模式中唤醒,EXTI信号可以是16个外部I/O口之一、PVD的输出、RTC闹钟或USB的唤醒信号。●待机模式在待机模式下可以到达最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.8V局部的供电被切断;PLL、HSI和HSE的RC振荡器也被关闭;进入待机模式后,SRAM和存放器的内容将消失,但后备存放器的内容仍然保存,待机电路仍工作。从待机模式退出的条件是:NRST上的外部复位信号、IWDG复位、WKUP管脚上的一个上升边沿或RTC的闹钟到时。注:在进入停机或待机模式时,RTC、IWDG和对应的时钟不会被停顿。DMA灵活的7路通用DMA可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;DMA控制器支持环形缓冲区的管理,防止了控制器传输到达缓冲区结尾时所产生的中断。每个通道都有专门的硬件DMA请求逻辑,同时可以由软件触发每个通道;传输的长度、传输的源地址和目标地址都可以通过软件单独设置。DMA可以用于主要的外设:SPI、I2C、USART、通用和高级定时器TIMx和ADC。RTC(实时时钟)和后备存放器RTC和后备存放器通过一个开关供电,在VDD有效时该开关选择VDD供电,否则由VBAT管脚供电。后备存放器(10个16位的存放器)可以用于在VDD消失时保存数据。实时时钟具有一组连续运行的计数器,可以通过适当的软件提供日历时钟功能,还具有闹钟中断和阶段性中断功能。RTC的驱动时钟可以是一个使用外部晶体的32.768kHz的振荡器、内部低功耗RC振荡器或高速的外部时钟经128分频。内部低功耗RC振荡器的典型频率为32kHz。为补偿天然晶体的偏差,RTC的校准是通过输出一个512Hz的信号进展。RTC具有一个32位的可编程计数器,使用比拟存放器可以产生闹钟信号。有一个20位的预分频器用于时基时钟,默认情况下时钟为32.768kHz时它将产生一个1秒长的时间基准。独立的看门狗独立的看门狗是基于一个12位的递减计数器和一个8位的预分频器,它由一个独立的32kHz的内部RC振荡器提供时钟,应为这个RC振荡器独立于主时钟,所以它可运行于停机和待机模式。它可以被当成看门狗用于在发生问题时复位整个系统,或作为一个自由定时器为应用程序提供超时管理。通过选择字节可以配置成是软件看门狗或硬件看门狗。在调试模式,计数器可以被冻结。窗口看门狗窗口看门狗内有一个7位的递减计数器,并可以设置成自由运行。它可以被当成看门狗用于在发生问题时复位整个系统。它由主时钟驱动,具有早期预警中断功能;在调试模式,计数器可以被冻结。系统时基定时器这个定时器是专用于操作系统,也可当成一个标准的递减计数器。它具有下述特性:●24位的递减计数器●重加载功能●可屏蔽的计数器为0中断●可编程时钟源通用定时器(TIMx)产品中内置了多达3个同步的标准定时器。每个定时器都有一个16位的自动加载递加/递减计数器、一个16位的预分频器和4个独立的通道,每个通道都可用于输入捕获、输出比拟、PWM和单脉冲模式输出,在最大的封装配置中可提供最多12个输入捕获、输出比拟或PWM通道。它们还能通过定时器链接功能与高级控制定时器共同工作,提供同步或事件链接功能。在调试模式下,计数器可以被冻结。任一标准定时器都能用于产生PWM输出。每个定时器都有独立的DMA请求机制。高级控制定时器(TIM1)高级控制定时器(TIM1)可以被看成是一个分配到6个通道的三相PWM发生器,它还可以被当成一个完整的通用定时器。四个独立的通道可以用于:●输入捕获●输出比拟●产生PWM(边缘或中心对齐模式)●单脉冲输出●反相PWM输出,具程序可控的死区插入功能配置为16位标准定时器时,它与TIMx定时器具有一样的功能。配置为16位PWM发生器时,它具有全调制能力(0~100%)。在调试模式下,计数器可以被冻结。很多功能都与标准的TIM定时器一样,内部构造也一样,因此高级控制定时器可以通过定时器链接功能与TIM定时器协同操作,提供同步或事件链接功能。I2C总线多达2个I2C总线接口,能够工作于多主和从模式,支持标准和快速模式。它们支持双从地址寻址(只有7位)和主模式下的7/10位寻址。内置了硬件CRC发生器/校验器。它们可以使用DMA操作并支持SM总线2.0版/PM总线通用同步/异步承受发送器(USART)其中一个USART接口通信速率可达4.5兆位/秒,其他USART接口通信速率可达2.25兆位/秒。接口具有硬件的CTS和RTS信号管理、支持IrDA的SIRENDEC、与ISO7816兼容并具有LIN主/从功能。USART接口可以使用DMA操作。串行外设接口(SPI)多达2个SPI接口,在从或主模式下,全双工和半双工的通信速率可达18兆位/秒。3位的预分频器可产生8种主模式频率,可配置成每帧8位或16位。硬件的CRC产生/校验支持根本的SD卡和MMC模式。2个SPI接口都可以使用DMA操作。控制器区域网络(CAN)CAN接口兼容标准2.0A和2.0B(主动),位速率达1兆位/秒。它可以接收和发送11位标识符的标准帧,也接收和发送29位标识符的扩展帧。具有2个接收FIFOs,3级14个可调节的滤波器。内部SRAM缓冲最多可处理32个报文对象。通用串行总线(USB)STM32F103xx增强型系列产品内嵌一个USB设备,遵循USB全速标准;USB接口实现全速(12兆位/秒)的设备功能;具有可软件配置的端点和待机/恢复功能。专用的48MHz时钟由内部主PLL直接产生。通用输入输出接口(GPIO)每个GPIO管脚都可以由软件配置成输出(推拉或开路)、输入(带或不带上拉或下拉)或其它的外设功能;多数GPIO管脚都与数字或模拟的外设功能管脚共用。所有的GPIO管脚都有大电流通过能力。在需要的情况下,I/O管脚的外设功能可以通过一个特定的操作锁定,以防止意外的写入I/O存放器。在APB2上的I/O脚可达18MHz的翻转速度。ADC(模拟/数字转换器)STM32F103xx增强型产品内嵌2个12位的模拟/数字转换器(ADC),每个ADC有多达16个外部通道,可以执行单次或扫描转换模式;在扫描模式下,转换在一组选定的模拟输入上自动进展。ADC接口上额外的逻辑功能允许:●同时采样和保持●穿插采样和保持●单次采样ADC可以使用DMA操作。模拟看门狗功能允许非常精准地监视一路、多路或所有选中的被转换电压,当被监视的信号超出预置的阀值时,将产生中断。由标准定时器(TIMx)和高级控制定时器(TIM1)产生的事件,可以分别内部级联到ADC的开场触发、外部触发和DMA触发,允许应用程序同步AD转换和时钟的操作。温度传感器温度传感器产生一个随温度线性变化的电压,转换范围在2V<VDDA<3.6V之间。温度传感器在内部被连接到ADC12_IN16的输入通道上,用于将传感器的输出转换到数字数值。串行线JTAG调试口(SWJ-DP)内嵌ARM的SWJ-DP接口和JTAG接口,JTAG的TMS和TCK信号分别与SWDIO和SWCLK共用管脚,TMS脚上的一个特殊的信号序列用于在JTAG-DP和SWJ-DP间切换。主要函数说明1.函数ADC_DeInit函数名ADC_DeInit函数原形voidADC_DeInit(ADC_TypeDef*ADCx)功能描述将外设ADCx的全部存放器重设为缺省值输入参数1ADCx:x可以是1或者2来选择ADC外设ADC1或ADC2输出参数2无返回值无先决条件无被调用函数RCC_APB2PeriphClockCmd()例:/*ResetsADC2*/ADC_DeInit(ADC2);2.函数ADC_Init函数名ADC_Init函数原形voidADC_Init(ADC_TypeDef*ADCx,ADC_InitTypeDef*ADC_InitStruct)功能描述根据ADC_InitStruct中指定的参数初始化外设ADCx的存放器输出参数1ADCx:x可以是1或者2来选择ADC外设ADC1或ADC2输出参数2ADC_InitStruct:指向构造ADC_InitTypeDef的指针,包含了指定外设ADC的配置信息输出参数无返回值无先决条件无被调用函数无ADC_InitTypeDefstructureADC_InitTypeDef定义于文件“stm32f10x_adc.h〞:typedefstruct{u32ADC_Mode;FunctionalStateADC_ScanConvMode;FunctionalStateADC_ContinuousConvMode;u32ADC_ExternalTrigConv;u32ADC_DataAlign;u8ADC_NbrOfChannel;}ADC_InitTypeDef函数ADC_GetInjectedConversionValue函数名ADC_GetInjectedConversionValue函数原形u16ADC_GetInjectedConversionValue(ADC_TypeDef*ADCx,u8ADC_InjectedChannel)功能描述返回ADC指定注入通道的转换结果输出参数1ADCx:x可以是1或者2来选择ADC外设ADC1或ADC2输出参数2ADC_InjectedChannel:被转换的ADC注入通道输出参数无返回值转换结果先决条件无被调用函数无例:/*ReturntheADC1injectedchannel1converteddatavalue*/u16InjectedDataValue;InjectedDataValue=ADC_GetInjectedConversionValue(ADC1,ADC_InjectedChannel_1);函数DMA_Init函数名DMA_Init函数原形voidDMA_Init(DMA_Channel_TypeDef*DMA_Channelx,DMA_InitTypeDef*DMA_InitStruct)功能描述根据DMA_InitStruct中指定的参数初始化DMA的通道x存放器输出参数1DMAChannelx:x可以是1,2,3...输出参数2DMA_InitStruct:指向构造DMA_InitTypeDef的指针,包含了DMA通道x的配置信息输出参数无返回值无先决条件无被调用函数无设计过程或程序代码设计过程1、A/D变换原理◆采样:间隔一定时间对信号进展采样,用信号序列来代替原来时间上连续的信号。均匀采样:可完整地恢复原始信号,其中,T为采样时间间隔,fs表示采样频率,fm表示原始信号最大频率。◆量化:把采集到的数值送到量化器编码成数字形式,每个样值代表一次采样所获得的信号的瞬时幅度。A/D转换器一般为标量均匀量化。〔量化还可分为:标量量化、矢量量化〕量化误差〔与舍入方式相关〕:1LSB或1/2LSB◆编码:A/D模拟/数字转换器一般采用二进制编码,A/D变换后的结果到此可以表示为一个以0、1二进制形式表示的比特流,单位时间内可以传输的二进制比特速率就是A/D之后的码速率,数值上等于采样频率与量化比特数值之乘积。二进制编码:量化与字长的关系。3、ADC的A/D转换方式在查询方式下,软件可通过读取ADC模块转换完毕引脚EOC的状态或状态存放器中的转换完成标志位判断本次A/D是否完毕;假设完毕则从数据总线或数据存放器中读取A/D结果数据。2、ADC模拟/数字转换器:STM32的ADC是12位逐次逼近型的模拟数字转换器。它有18个通道可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或连续模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据存放器中。3、转换特点:STM32的ADC最大的转换速率为1Mhz,也就是转换时间为1us(ADCCLK=14M,采样周期为1.5个ADC时钟下得到),不能让ADC的时钟超过14M,否则将导致结果准确度下降。4、STM32将ADC的转换分为2个通道组:规则通道组和注入通道组。规则通道相当于运行的程序,而注入通道就相当于中断。在程序正常执行的时候,中断是可以打断程序正常执行的。同这个类似,注入通道的转换可以打断规则通道的转换,在注入通道被转换完成之后,规则通道才得以继续转换。规则组设置后,可以按照设置的通道顺序对各通道进展依次采集。方便于对多路ADC通道的自动采集。注入组最多设置4个通道,简单来讲就是需要触发才能采集设置的通道ADC值。本设计选择了采用规则组,设置了一个通道进展自动采集。5、此设计显示电压的特点:本设计测量电压值范围为0-3.3V的电压,显示误差为±0.001V。LCD实时显示电压值,MicroSD卡对数据进展同步存储。6、DMA请求:在这次设计中用到了ADC转换结果采用DMA传递方式。直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。7、LCD控制电路〔1〕本设计所使用的LCD为3寸,400X240分辨率。LCD模块使用STM32的FSMC接口控制。3TFT显示屏焊接在奋斗显示转接板上,在屏上贴有触摸屏,通过40芯的接口与V3或者MINI连接。程序代码1、主程序:intmain(void) { u16len,c2len,c3len,c4len; u8c[]="Voltage"; u8c2[]=""; u8c3[]=""; u8c4[]=".V"; u16bkColor; len=sizeof(c)-1;//计算字节数长度sizeof() c2len=sizeof(c2)-1; c3len=sizeof(c3)-1; c4len=sizeof(c2)-1; bkColor=White;RCC_Configuration(); //系统时钟配置为72MHzUsart1_Init(); //串口1初始化ADC_Configuration(); //ADC初始化FSMC_LCD_Init(); //FSMC总线配置 lcd_Init(); //液晶初始化//lcd_PutChar(10,10,'g',0x0000,0xffff);//LCD_test();USART_OUT(USART1,"\r\nUSART1printAD_value\r\n"); while(1){ if(ticks++>=900000){//间隔时间显示转换结果 ticks=0; Clock1s=1; } if(Clock1s){Clock1s=0; USART_OUT(USART1,"ThecurrentADvalue=%d\r\n",ADC_ConvertedValue);//串口显示字符段 //Delay(0xAFFFFf); Precent=(ADC_ConvertedValue*100/4096);//算出百分比,2的12次幂为0xfff Voltage=Precent*33;//Voltage为实际电压值的1000倍. c4[3]=(Voltage/1000+'0'); //取千位数的整数局部 c4[5]=((Voltage%1000)/100+'0');//对千位数取余数后再取其百位的整数局部 c4[6]=(((Voltage%100)/10)+'0'); //对百位数取余数后再取其十位的整数局部 c4[7]=((Voltage%10)+'0'); //对百位数取余数后再取其个位的整数局部 lcd_PutStr_16x24_Center(0,c3,c4len,Black,bkColor); lcd_PutStr_16x24_Center(Line1,c,len,Black,bkColor); lcd_PutStr_16x24_Center(Line2,c3,c3len,Black,bkColor); lcd_PutStr_16x24_Center(Line3,c4,c4len,Black,bkColor); lcd_PutStr_16x24_Center(Line4,c2,c2len,Black,bkColor); USART_OUT(USART1,"Thevvalue=%d.%d%d%dV\r\n",c4[3]=(Voltage/1000),c4[5]=((Voltage%1000)/100),c4[6]=(Voltage%100)/10,c4[7]=(Voltage%10)); //显示实际电压值 LCD_test();}}} 2、ADC配置:ADC_Configuration函数用于配置ADC1的通道11,因为只用了ADC1所以采用了ADC独立模式,设置通道11进入规则组,规则组里的通道只有1个,就是通道1,转换用了扫描方式,软件触发,转换结果采用DMA方式传递到2字节长度的缓存区里(ADC_ConvertedValue),默认的ADCCLK为36MHz,采样周期是55.5+12.5时钟周期,相当于采样时间是间隔(68/36)us。voidADC_Configuration(void){ ADC_InitTypeDefADC_InitStructure; GPIO_InitTypeDefGPIO_InitStructure; DMA_InitTypeDefDMA_InitStructure;//设置AD模拟输入端口为输入1路AD规则通道 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; GPIO_Init(GPIOC,&GPIO_InitStructure); /*EnableDMAclock*/RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/*EnableADC1andGPIOCclock*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); /*DMAchannel1configuration*/ //使能DMA DMA_DeInit(DMA1_Channel1); DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address; //DMA通道1的地址 DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC_ConvertedValue; //DMA传送地址 DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC; //传送方向 DMA_InitStructure.DMA_BufferSize=1; //传送内存大小,100个16位 DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable; //传送内存地址递增 DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord; //ADC1转换的数据是16位 DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord; //传送的目的地址是16位宽度 DMA_InitStructure.DMA_Mode=DMA_Mode_Circular; //循环 DMA_InitStructure.DMA_Priority=DMA_Priority_High; DMA_InitStructure.DMA_M2M=DMA_M2M_Disable; DMA_Init(DMA1_Channel1,&DMA_InitStructure); /*允许DMA1通道1传输完毕中断*/ //DMA_ITConfig(DMA1_Channel1,DMA_IT_TC,ENABLE); //使能DMA通道1 DMA_Cmd(DMA1_Channel1,ENABLE); //ADC配置 ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; //ADC1工作在独立模式 ADC_InitStructure.ADC_ScanConvMode=ENABLE; //模数转换工作在扫描模式〔多通道〕还是单次〔单通道〕模式 ADC_InitStructure.ADC_ContinuousConvMode=ENABLE; //模数转换工作在扫描模式〔多通道〕还是单次〔单通道〕模式 ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动 ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐 ADC_InitStructure.ADC_NbrOfChannel=1;//规定了顺序进展规则转换的ADC通道的数目。这个数目的取值范围是1到16 ADC_Init(ADC1,&ADC_InitStructure); /*ADC1regularchannelsconfiguration[规则模式通道配置]*/ //ADC1规则通道配置 ADC_RegularChannelConfig(ADC1,ADC_Channel_11,1,ADC_SampleTime_55Cycles5); //通道11采样时间55.5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年吉安市青原区中小学教师招聘笔试参考试题及答案详解
- 2026年柳州市柳北区中小学教师招聘笔试参考试题及答案详解
- 2026年河北省街道办人员招聘笔试模拟试题及答案详解
- 2026年兰州市安宁区街道办人员招聘笔试模拟试题及答案详解
- 2026年太原市小店区街道办人员招聘考试备考题库及答案详解
- 2026年广西壮族自治区钦州市中小学教师招聘笔试参考题库及答案详解
- 2026年南昌市湾里区中小学教师招聘考试备考题库及答案详解
- 2026年南京市玄武区中小学教师招聘笔试参考题库及答案详解
- 2025年甘肃省平凉市街道办人员招聘考试试题及答案详解
- 2026年河南省许昌市街道办人员招聘考试模拟试题及答案详解
- 2026年湖南有色黄沙坪矿业有限公司招聘80人笔试参考题库及答案详解
- GA/T 1999.3-2025道路交通事故车辆速度鉴定方法第3部分:基于视频图像
- 2026四川凉山州越西县县属国有企业管理人员市场化选聘(第二轮)5人模拟试卷及答案详解(真题汇编)
- 建设电工劳务分包合同
- 2026年联通考试试题及答案
- 衍生金融工具(高教)第十三章 衍生工具的运用和发展
- 大疆创新人力资源管理实践完全指南
- 2026年河南省网格员招聘考试参考试题及答案解析
- 2026年城乡规划设计院招聘试题(含答案)
- 职工技师工作站工作制度
- AI人工智能在物理教学实践中的应用
评论
0/150
提交评论