基于STM32的智能WIFI烟雾报警系统_第1页
基于STM32的智能WIFI烟雾报警系统_第2页
基于STM32的智能WIFI烟雾报警系统_第3页
基于STM32的智能WIFI烟雾报警系统_第4页
基于STM32的智能WIFI烟雾报警系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32的智能WIFI烟雾报警系统摘要:该系统使用STM32作为微处理器,MQ-2通过A/D转换为STM32作为烟雾传感器,然后通过Esp8266WiFi芯片上传到云平台实时查看。在完成该系统的硬件设计和软件的开发方面,主要研究了选型以及烟雾传感器的电路,参数以及STM32客户端的建立,以及机智云平台应用开发。该系统具备实时性,且该系统价格低廉,处理器性能稳定,且含有多个IO口,扩展方便。关键字:STM32;串口;云平台;A/D转换Abstract:ThissystemusesSTM32asamicroprocessor,andMQ-2isconvertedtoSTM32throughA/Dasasmokesensor,andthenuploadedtothecloudplatformthroughtheEsp8266WiFichiptoviewitinrealtime.Inthecompletionofthesystemhardwaredesignandsoftwaredevelopment,themainresearchofselectionandthesmokesensorcircuit,parametersandtheestablishmentoftheSTM32client.Thesystemhasreal-timeperformance,andthesystemischeap,processorperformanceisstable,andcontainsmultipleIOports,whichhastheadvantagesofexpansionandconvenience.Keywords:STM32;SerialPort;;CloudPlatform;A/DConversion目录摘要 ⅠAbstract Ⅰ目录 Ⅱ1系统研究 11.1本系统的研究意义 11.2微处理器选型 11.3烟雾传感器选型 21.4无线模块选型 22系统设计 22.1系统整体思路 22.2系统模块设计概述 22.2.1STM32模块介绍 22.2.2烟雾传感器模块介绍 32.2.3WIFI模块介绍 42.3系统设计说明 43系统硬件设计 53.1微控制器模块 53.1.1电源和启动方式 53.1.2按键LED 53.1.3ADC 63.1.4USART 63.1.5定时器 73.1.6程序烧录 74程序设计模块 84.1ESP8266WIFI芯片开发简介 84.2传感器数据采集开发 84.2.1硬件连线 84.2.2ADC开发 94.3USART调试开发 104.4主体应用程序开发 104.5应用程序设计流程 115系统测试相关问题 125.1接收烟雾浓度数据 125.2串口测试 136结论 131系统研究1.1本系统的研究意义随着科技的发展,互联网在我们的生活中扮演着越来越重要的角色,智能家居也越来越普及,那么对安全的需求是否也越来越重要了。本系统根据机智云官方平台提供的云平台实时上传烟雾浓度实现实时查看的功能,实现了提前预警的功能,极大地避免了损失。本系统相较于市面上的烟雾报警器有以下优点:灵敏度高,扩展方便,易于学习传感器知识以及嵌入式知识,可操作性强,价格是市面上的五分之一,以及采用STM32系列芯片作为主控芯片,市面上并没有以STM32作为主控芯片的烟雾报警器。缺点:本系统知识实现了采集报警以及上传的作用,无法达到商业化的目的,并且相较于市面上的烟雾报警器,安装不方便以及没有设计带阻燃材料的外壳。最好的方式是将本次系统开发作为学习的途径,结合所学的传感器知识,嵌入式开发知识以及网络通信知识进行合理的运用。提升专业能力,提高职业竞争力。1.2微处理器选型微处理器是这个系统的骨干,可以说是非常的重要了。本次系统我选用的是STM32Fx系列,STM32系列基于高性能、低成本、低功耗的嵌入式应用专门设计的ARM。CortexM0,M0+,M3,M4和M7内核。这款微处理器是意法半导体公司推出的,具有高集成度,高性能,具有12通道DMA控制器,多个个快速I/O方便扩展,也有适合烟雾传感器的低功耗模式。并且STM32还提供了与其他STM32微控制器相同的标准接口,更是增加的产品的灵活性。并且低功耗模式到快速启动也同样节省能量,从低功耗模式到唤醒用时小于6微秒,完全可以满足烟雾报警器要求。1.3烟雾传感器选型烟雾传感器相当于是整个系统的眼睛,可以说是很重要的一个环节了。经过观看各种烟雾传感器的属性,经过对比调查。烟雾传感器主要分为3类(1):离子式烟雾传感器;(2)光电式烟雾传感器;(3)气敏式烟雾传感器;本次设计最适合的传感器采用的是离子式烟雾传感器,本次采用的型号为MQ-2,其采用的材料是气敏材料,敏感度非常高,细微的变化也能察觉到,所以非常适合作为本设计的传感器。但是要小心:在使用之前必须预热。1.4无线模块选型对于无线模块,本系统选用的是ESP8266。ESP8266具有成本低,高性能的特点。其成本只要10元左右,可以说是物美价廉。其可以作为AP模式和station模式,本系统中作为AP通过WIFI或者热点向云平台发送数据。2系统设计系统整体思路图2-1系统结构框图2.2系统模块设计概述2.2.1STM32模块介绍本系统采用的芯片型号是STM32F103c8t6,基于ARM-M架构32位的微控制器,作为本系统的处理核心,拥有从64K或128K字节的闪存程序存储器,高达20K字节的SRAM。支持睡眠、停机和待机模式[13]。VBAT为RTC和后备寄存器供电。该控制器具有2个12位的模数转换器,多达16个通道,采用逐次逼近算法的AD转换器,可单次、连续、扫描模式执行。以左对齐的方式在16位数据寄存器中存放转换结果,以中断的方式通过DMA读取。同时STM32F103c8t6还具有3个USART。以及标准JTAG调试接口,可接各种通用仿真器。还有在本系统中使用的2个按键以及LED灯。还有20P-GPIO排针和USB接口。本次使用的芯片原理图如下:图2-2STM32F103C8T6CPU原理图2.2.2烟雾传感器模块介绍前面已经介绍了MQ-2的物理特性,这里介绍一下MQ-2的电路基本工作原理。MQ-2采用的是电阻式设计。其内部由AL203陶瓷管以及Sn02敏感层组成,测量电机及加热器构成的敏感原件构成了它的工作环境。当传感器所在环境中存在可燃气体的时候,其电导率随空气中可燃气体的浓度呈对数级增长。图2-3MQ-2电路图2.2.3WIFI模块介绍本系统的WIFI模块采用的是espressif的Esp8266芯片。ESP8266相较于其他WIFI芯片有以下优点:其价格非常便宜,为其他wifi芯片的二分之一不到,并且设有标准的外设数字接口,可方便供编程使用,为其烧录专用的编程固件即可使其实现编程的功能,Esp8266还集成了32位的tensilica处理器,并且外围电路占用少,可将所占pcb空间降至最低。此产品是物联网应用的专用产品,具有多项专用技术实现了超低功耗。其省电模式适用于各种场景。2.3系统设计说明系统图如图2-1所示,由烟雾传感器MQ-2采集数据转换为电压值,而MQ-2连接STM32F103xx的ADC通过AD转换将电压值转换为阿拉伯数字,再通过数学计算转换为气体浓度,然后STM32F103xx又通过ESP8266芯片传输浓度值到云平台(如机智云),然后在云平台预设预警值。开始时STM32的LED1亮起红色,当浓度超过预警值时,LED灯开始闪烁,并启动蜂鸣器(未实装)。以提醒防止火灾发生。3系统硬件设计3.1微控制器模块3.1.1电源和启动方式STM32的工作电压为3.3v同时IO兼容5V电平,可输出供烟雾传感器的5V高电平。STM32有三种启动模式,研究启动模式主要是用于烧录程序,它的三种启动模式对应的存储介质均为芯片内置的,他们是:1)用户闪存=芯片内置的Flash2)SRAM=芯片内置的RAM内存3)系统存储器=芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常所得ISP程序。这个区域的内容在芯片出场后没人能够修改或者擦除,即我们常说的ROM区。[1]每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了复位后从那个区域开始执行程序,见下表表3.1BOOT0与BOOT1状态对应的启动方式BOOT1BOOT0启动方式x0从用户闪存启动,正常的工作模式01从系统存储器启动,这种模式有厂家设置11从内置SRAM启动,这种模式可以用于调试3.1.2按键LEDSTM32F103c8t6的IO是通过一个GPIO_InitTypeDef的结构体来初始化的,定义如下:typedefstruct{uint16_tGPIO_Pin;GPIOSpeed_TypeDefGPIO_Speed;GPIOMode_TypeDefGPIO_Mode;}GPIO_InitTypeDef;按键与LED的电路图如下图3-1按键与LED通过函数GPIO_SetBits(GPIO_TypeDef,uint16_t);设置引脚状态为1或者0来控制LED的亮或者灭。而按键通过扫描的方式来查询是否按下,若按下,则PA0的状态为0,反之为1即可得知按键的状态来做一些控制的事情。3.1.3ADCSTM32的ADC为12位转换结果,1MHZ转换速率,转换结果范围为0~4096;转换范围为:0~3.6V此时计算公式为(x/4096*3.3);对ADC供电要求为:2.4~3.6V;而DMA的作用就是提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU任何干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。DMA控制器支持环形缓冲区的管理,避免了控制器传输到达缓冲区结尾时所产生的中断。[16]编程时需要对结构体structADC_nitTypeDef进行初始化,然后配置其参数可以通过查看STM32的datasheet进行配置。3.1.4USARTSTM32支持USART(通用异步收发传输器),这是串口最基本,最常用的方式,全双工,异步通讯方式,通过串口的通讯协议,我们知道要配置串口通讯,至少要配置这几个参数:1)字长(一次传送的数据长度);2)波特率(每秒传输的数据位数);3)奇偶校验位;4)停止位;[8]在ST库里面有一个串口初始化结构体:structUSART_HandleTypeDef;当然使用串口还设计到连线,要实现基本的全双工异步通讯,只要3条线,分别为RX,TX,GND;RX即PA9,TX是PA10,所以还需要对这两个引脚做GPIO设置,即前面提到的结构体:structGPIO_InitTypeDef;3.1.5定时器STM32F103c8t6有两个可用的定时器:TIM_ETR(PA12,Pin33)和TIM2_CH1_ETR(PA0,Pin10)。通过对structGPIO_InitTypedef;结构体进行初始化就可设置其计时频率。通过对结构体structTIM_TimeBaseInitTypeDef;进行配置可设置其模式以及使能。以及技术次数,初始计数值。初始化完毕后,需要对中断处理结构体structNVIC_InitStructure进行初始化,这样就能在计时完成之后做出相应的反应,可在中断处理函数voidTIMX_IRQHandler(void);进行判断以及处理,中断函数里面不能调用其他函数。3.1.6程序烧录当对微控制器进行程序烧录时,我已经提前购买了USB转TTL以及所需的杜邦线,连线方式为TTL的RXD与STM32TXD1相连,TTL的TXD与STM32的RXD1相连,GND对应STM32的GND前面提到了STM32的启动方式,BOOT0与BOOT1选择模式,烧录模式:Boot0街道3.3V,Boot1接到GND,重新让开发板接通电源,重启后,STM32F103c8t6就会进入到ISP模式,然后根据手册使用工具flashloader对板子先进行程序擦除,然后选择要烧录的程序进行烧录,当提示烧录成功后即可。4程序设计模块系统的程序设计包括以下4个部分:给ESP8266WIFI芯片烧录GAgent固件以及ESP8266开发,传感器数据采集开发,STM32USART开发,主机应用程序开发。4个合为一体便成就了智能报警系统,四者是一个整体,需要相互配合,才能完成及时的,准确的,可靠的烟雾数据采集以及预警。4.1ESP8266WIFI芯片开发简介ESP8266是乐鑫信息科技有限公司出品的一款WIFI芯片,片上资源丰富,可编程,性能强,在淘宝上10元左右就能买到。本系统对ESP8266的开发需要先对其烧录机智云的GAgent固件,在机智云官网下载中心下载下载,GAgent是运行在各种通讯模组上的一款应用程序,可以提供上层应用到产品设备的双向数据通讯,还提供了设备的配置入网,发现绑定,程序升级等功能,开发者使用该固件后,只需要关心该系统的采集逻辑开发,不用关心数据的通讯功能开发,降级开发难度,大大提高了开发效率。所以本系统的开发只需要将GAgent固件烧录ESP8266,然后根据机智云官网提供的协议进行编程,将数据发送至云端,完成数据采集到云端的步骤。ESP8266通过串口2与STM32进行通信,通过USART2将烟雾值发送至ESP8266,然后ESP8266通过本地WIFI发送至云端进行查看。4.2传感器数据采集开发4.2.1硬件连线对于传感器数据的采集,需要将MQ-2烟雾传感器连接到STM32开发板,连线所需要的杜邦线可在各电子器件商店购买,连线方式为:将MQ-2传感器的VCC端用杜邦线接到STM32开发板的PB10,PB10可供5V电压,GND接到STM32的GND,AO接到STM32开发板的PA1,使用ADC2收集数据。输出AO范围为0~5V。4.2.2ADC开发ADC的开发依赖STM32官方提供的固件库,本系统采用的是开发板的ADC2,GPIOPA1,通道1,进行转换前首先要对PA1进行初始化。通道1的AD转换可单次,连续,扫描或间断模式执行,转换结果可以左对其或右对其方式存储在16位数据寄存器中。初始化时,只配置单通道,将引脚PA1配置成模拟输入模式,作为ADC的输入必须使用模拟输入。对于ADC的通道,每个ADC通道的GPIO引脚端口,GPIO的引脚在设为模拟输入模式后可用于模拟电压的输入。由于本系统采用的是DMA模式,所以初始化ADC时顺便配置DMA,DMA配置为:使用DMA1的通道1,数据从ADC外设的数据寄存器(ADC1——DR_Address)转移到(ADC_ConvertedValue变量),内存外设地址固定,每次传输的大小为半字(16位),使用DMA循环传输模式,DMA传输的外设地址,也就是ADC2的地址0x40012800-0x40012BFF,地址可通过查询本芯片的DataSheet获得。然后就是配置转换速度,ADC预分频器的输入为高速外设时钟(PCLK2),使用RCC_ADCCLKConfig()库函数来设置ADC的预分频值在程序中,ADC——ConvertedValue变量的修饰名称为volatile,volatile的作用是让编译器不要去优化这个变量,这样每次用到这个变量时都要回到变量相应的内存中去取值,如果不使用volatile进行修饰的话,ADC_ConvertedValue变量在被使用时可能会直接从CPU的寄存器中取出(由于之前变量被访问过,也就是说之前从内存中取出ADC_ConvertedValue的值被保存到某个CPU寄存器中),之所以直接从寄存器中去取值而不去内存中取值,这是编译器的优化结果。Volatile的意思是意想不到的改变,因为ADC_ConvertedValue这个变量随时可能会被DMA控制器改变,所以用volatile来修饰变量保证每次读取到的都是实时ADC转换值。4.3USART调试开发该开发板具有3个USART,本系统调试时采用的是USART2,使用的引脚为:PA2作为TX,PA3作为RX,配置其对应IO口的输入输出模式。配置为难题可在STM32固件库函数用户手册里找到,配置为以下模式PA2应配置为:GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;PA3应为:GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;初始化时需要使能RCC时钟,方式为:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART2|RCC_APB2Periph_GPIOA,ENABLE);然后就是前面介绍时提到的配置其工作模式,配置为:波特率115200,数据位为8,停止位设置为1,不使用奇偶校验,模式设置为接收和发送都使能,配置完成后使用库函数:USART_Cmd(USART2,ENABLE);使能USART2就可以开始调试了。然后可以使用一个非常好用的工具:串口调试助手,打开工具,按工作模式的配置配置串口调试助手串口信息,即可让开发板与与其连接的上位机进行串口通信,即可开始调试收发数据。4.4主体应用程序开发主体应用程序开发时,需要用到一个非常好用的工具,STM32CubeX,在这个工具里面,可以对各种型号的STM32系列芯片进行配置,以及时钟,ADC,GPIO,USART配置,配置好之后可以直接生成Kevil5的工程,生成的工程里面具有STM32官方的固件库,直接省去了自己添加官方固件库的步骤,并且ADC,USART的配置都可以在里面完成。比如在配置USART时使用STM32CubeX可以直接配置其工作模式:图4-1USART工作模式配置在工具里也可以对ADC,LED等进行配置,使用起来非常方便。配置完成后,生成的工程就包含了初始化以及配置工作了,本系统使用的资源有一个ADC,3个USART,以及几个引脚分别做烟雾传感器的电源以及WIFI芯片的电源,以及自己的供电电源和程序下载,配置完成后即可开始进行编程。至于ESP8266发送至云端这方面,本系统采用黑箱操作,只需要将数据通过串口将数据发送给ESP866芯片,前期给ESP8266烧录的机智云固件就会将数据放松至云端供实时查看。发送时间间隔设置为100ms更新一次信息,发送前对ADC数值进行转换,发送给ESP8266的同时也通过USART2发送给上位机以便调试时查看。并且设置预警烟雾值,当转换值大于预设值时做出相应反应,相应反应为开发,有待后期改进。开发板进行的反应为红灯从不亮变为闪亮(因为这个开发板没有其他颜色)。4.5应用程序设计流程下面为程序设计流程图:图4-2程序流程图5系统测试相关问题5.1接收烟雾浓度数据由于在机智云官方要申请上线需要一定时间,设备上线暂时停止,机智云官方提供了APP供硬件调试,可在机智云APP上实时接收ESP8266发送的浓度值。5.2串口测试通过连接电脑开始串口测试,我用的是串口3,波特率设置为9600,烧录程序后开始测试。能接收转换后的adc电压值:图5-1串口调试助手6结论本系统实现了通过烟雾传感器MQ2采集数据通过AD转换转换为数字然后通过串口发送给WIFI芯片并作为AP通过过WIFI入网发送给云端实现智能监测系统。通过本次系统开发,我结合本专业所学的串口知识,计算机网络知识,嵌入式知识,以及传感器知识进行了良好的运用,达到了知行合一的目的,程序编写能力也有了一定的提升,对整个嵌入式系统也有了新的理解。不足之处:本系统没有在开发板上安装可显示的液晶屏,也没有可供监视的摄像头功能,不能观看环境具体细节,以及没有声音报警系统。没有达到浓度值的手机推送功能,只能查看当前的浓度值以及LED亮起。附录#include"main.h"#include"stm32f1xx_hal.h"/*USERCODEBEGINIncludes*/#include"gizwits_product.h"#include"common.h"/*USERCODEENDIncludes*/ADC_HandleTypeDefhadc1;DMA_HandleTypeDefhdma_adc1;TIM_HandleTypeDefhtim2;UART_HandleTypeDefhuart1;UART_HandleTypeDefhuart2;uint32_tConvertedValue=0;int32_tSmoke=0;#defineMAX_CONVERTED_VALUE4095/*Maxconvertedvalue*/#defineVREF100/*USERCODEBEGINPV*//*Privatevariables---------------------------------------------------------*//*USERCODEENDPV*//*Privatefunctionprototypes-----------------------------------------------*/voidSystemClock_Config(void);staticvoidMX_GPIO_Init(void);staticvoidMX_DMA_Init(void);staticvoidMX_TIM2_Init(void);staticvoidMX_USART1_UART_Init(void);staticvoidMX_USART2_UART_Init(void);staticvoidMX_ADC1_Init(void);staticvoidMX_NVIC_Init(void);/*USERCODEBEGINPFP*//*Privatefunctionprototypes-----------------------------------------------*//*USERCODEENDPFP*//*USERCODEBEGIN0*//***key2shortpresshandle*@paramnone*@returnnone*@paramnone*@returnnone*//*USERCODEEND0*//***@briefTheapplicationentrypoint.**@retvalNone*/intmain(void){/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration----------------------------------------------------------*//*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();/*USERCODEBEGINInit*//*USERCODEENDInit*//*Configurethesystemclock*/SystemClock_Config();/*USERCODEBEGINSysInit*//*USERCODEENDSysInit*//*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_DMA_Init();MX_TIM2_Init();MX_USART1_UART_Init();MX_USART2_UART_Init();MX_ADC1_Init();/*Initializeinterrupts*/MX_NVIC_Init();/*USERCODEBEGIN2*/ timerInit(); uartInit(); userInit(); gizwitsInit(); if(HAL_ADC_Start_DMA(&hadc1,&ConvertedValue,1)!=HAL_OK){Error_Handler();}/*USERCODEEND2*//*Infiniteloop*//*USERCODEBEGINWHILE*/while(1){/*USERCODEENDWHILE*//*USERCODEBEGIN3*/ HAL_Delay(100); Smoke=((float)((float)ConvertedValue*VREF)/MAX_CONVERTED_VALUE);printf("Smoke=%d\r\n",Smoke); if(Smoke>20){ HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET); } else HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET); currentDataPoint.valuesmoke=Smoke; gizwitsHandle((dataPoint_t*)¤tDataPoint);}/*USERCODEEND3*/}/***@briefSystemClockConfiguration*@retvalNone*/voidSystemClock_Config(void){RCC_OscInitTypeDefRCC_OscInitStruct;RCC_ClkInitTypeDefRCC_ClkInitStruct;RCC_PeriphCLKInitTypeDefPeriphClkInit;/**InitializestheCPU,AHBandAPBbussesclocks*/RCC_OscInitStruct.OscillatorType=RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState=RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue=RCC_HSE_PREDIV_DIV1;RCC_OscInitStruct.HSIState=RCC_HSI_ON;RCC_OscInitStruct.PLL.PLLState=RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource=RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL=RCC_PLL_MUL7;if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!=HAL_OK){_Error_Handler(__FILE__,__LINE__);}/**InitializestheCPU,AHBandAPBbussesclocks*/RCC_ClkInitStruct.ClockType=RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider=RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider=RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider=RCC_HCLK_DIV1;if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct,FLASH_LATENCY_2)!=HAL_OK){_Error_Handler(__FILE__,__LINE__);}PeriphClkInit.PeriphClockSelection=RCC_PERIPHCLK_ADC;PeriphClkInit.AdcClockSelection=RCC_ADCPCLK2_DIV4;if(HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit)!=HAL_OK){_Error_Handler(__FILE__,__LINE__);}/**ConfiguretheSystickinterrupttime*/HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);/**ConfiguretheSystick*/HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);/*SysTick_IRQninterruptconfiguration*/HAL_NVIC_SetPriority(SysTick_IRQn,0,0);}/***@briefNVICConfiguration.*@retvalNone*/staticvoidMX_NVIC_Init(void){/*TIM2_IRQninterruptconfiguration*/HAL_NVIC_SetPriority(TIM2_IRQn,1,0);HAL_NVIC_EnableIRQ(TIM2_IRQn);/*USART2_IRQninterruptconfiguration*/HAL_NVIC_SetPriority(USART2_IRQn,0,0);HAL_NVIC_EnableIRQ(USART2_IRQn);}/*ADC1initfunction*/voidMX_ADC1_Init(void){ADC_ChannelConfTypeDefsConfig;/**Commonconfig*/hadc1.Instance=ADC1;hadc1.Init.ScanConvMode=ADC_SCAN_DISABLE;hadc1.Init.ContinuousConvMode=ENABLE;hadc1.Init.DiscontinuousConvMode=DISABLE;hadc1.Init.ExternalTrigConv=ADC_SOFTWARE_START;hadc1.Init.DataAlign=ADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversion=1;if(HAL_ADC_Init(&hadc1)!=HAL_OK){Error_Handler();}/**ConfigureRegularChannel*/sConfig.Channel=ADC_CHANNEL_0;sConfig.Rank=1;sConfig.SamplingTime=ADC_SAMPLETIME_71CYCLES_5;if(HAL_ADC_ConfigChannel(&hadc1,&sConfig)!=HAL_OK){Error_Handler();}}/*TIM2initfunction*/staticvoidMX_TIM2_Init(void){TIM_ClockConfigTypeDefsClockSourceConfig;TIM_MasterConfigTypeDefsMasterConfig;htim2.Instance=TIM2;htim2.Init.Prescaler=7200-1;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=10-1;htim2.Init.ClockDivision=TIM_CLOCKDIVISION_DIV1;htim2.Init.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_DISABLE;if(HAL_TIM_Base_Init(&htim2)!=HAL_OK){_Error_Handler(__FILE__,__LINE__);}sClockSourceConfig.ClockSource=TIM_CLOCKSOURCE_INTERNAL;if(HAL_TIM_ConfigClockSource(&htim2,&sClockSourceConfig)!=HAL_OK){_Error_H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论