摘 要
随着健康观念的流行,科学技术与健康意识的提升。人们更加讲究个人卫生,手部的清洁更显得至关重要。尤
其在严寒的冬天,相对于传统的用毛巾擦拭手,人们更偏向于使用干手器等这些简单便捷的电子设备来烘干双手。
干手器无须触碰地面,便能烘烤双手,并且在烘烤过程中,由于水分的挥发和空气的自由流动,打破了病菌的繁殖
环境,从而降低了病菌的传染。另外相对于传统的C51单片机干手器,用stm32单片机做内核具有接口多,运行快的
特点,使干手器设定更加灵活,可以根据不同需求增添其他功能。现根据目前市场上的干手机部件较多、抗干扰
强、生产成本高、干手运行速度、较慢效应并不突出等问题,专门设计了一种基于STM32单片机的智能干手器。该控
制系统通过32单片机控制集成电路和红外线传感集成电路,解决了上述缺陷,可以迅速、自动地感知人员的伸入与
撤离。通过C语言编程,增添了防抖动的功能。该控制系统设计通过红外传感,采用单片机控制继电器闭合的方式,
来控制水龙头的出水。拓展了洗手功能,可以做到干洗一体,操作简便、工作安全、系统平稳,可满足工程设计需
求和工作精度指标。
关键词:STM32 红外感应 干手器
绪 论
健康卫生和环境保护是21世纪人类社会最为关注的话题之一,设计符合市场需求的健康节能产品对改善人民的
生活质量有着积极意义,为了使人们洗手之后能够有效的避免细菌的继续传播,人们急切的需要具有高度人性化和
智能化功能的产品来干手,使人们在使用时也能保持健康愉快的心情。
干手器是一 款较高档的卫生洁具,广泛应用于 机场车站、宾馆酒店、体育场等公共场所的洗手间。洗手之后,双手放在自动烘干机的出风口,自动烘干机会自动送风,使您的手迅速干燥,在您离开干燥机的出口时,自动
停止气流,使您告别传统的毛巾擦拭双手。干手器的使用,可以预防手的湿气导致的细菌滋生,避免疾病的传染和
病菌的感染。
第一章 干手器系统综述
1.1研究意义
洗手,作为生活中一种普遍简单的清洗方法,能够防止手和别人的物品接触传染病毒,极大程度上降低了病菌
的传染。
尤其近二年新冠病毒席卷世界,病毒感染的笼罩下,使我们越来越知道洗手的必要性。但是在进行清洗的过程
中,人们很容易忽略了洗手后的擦干过程。当人们在洗完手之后,由于掌中留下的水分以及手本身的温度,就可以
给病菌创造优越的繁殖条件,而如果人们没有及时擦除手中残留的水分,在清洁洗手后未能彻底除去的病菌,就会
在短时间内重新生长,大量繁殖。所以,在洗手以后有效的去掉多余的水分,在整个清洁洗手过程中,至关重要。
同时,也是最易被人们忽视的一个环节。
在很多的擦干烘干方法中,简单小巧的一个干手器,是最为高效和彻底的一个方法。此外,相对于普通的一次
性毛巾擦手方式,烘干机的广泛应用,也大大减少了对环境的损害。所以,利用所学专业知识,设计新型方便又健
康的干手器,对避免病菌的传染,和改善人类饮食健康、提高生活品质,具有积极的意义和作用。
1.2国内外发展技术现状
干手器,作为一个简单方便的卫生洁具,已遍布于各类公共场合。但是,现在市场上大部分的干手器都没有达
到吹干手部水分的功效,有的还出现了卫生质量问题。
不管国内或者海外,干手器都具有重要的研究意义,引起了众多著名公司的广泛关注和研究。例如,DIHOURABS干手器系统,在发出X-10命令的接收端使用了二百二十V的配电线路,达到了智能控制的目的。同时不需要
另外的配电网,也是ABS控制系统的另一个优点(因为其他的智能干手控制系统都避开了不布低压线的这一环节,在
家庭中部署其他的干手控制系统时往往需要在墙面或地面上开凿,甚至钻孔,所以存在着应用上不方便,和人性化
方面的问题)。但是由于该套操作系统在国内外应用的并不是十分的广泛,另外这套产品的售价偏高,跟人们的消
费需求不匹配,在市场上并没有普及。PTC热敏电阻干手器控制系统(德国),该控制器的设计实施中运用了预埋总
线工艺技术,与其他智能控制器一样也利用了传感器技术、电子与单片机技术和中央控制系统的工作机理。但是因
为存在工程建设相对复杂,工艺技术要求严格,且价格又无法被人们所理解,使得该制品面世至今,不被国内市场
所接纳。DH9922干手器管理系统(新加坡),体系比较完善和稳定性高,在这方面也比较符合中国的国情,但是同
时也存在系统结构不完善,灵敏度不高,且价格也不被大家认可,所以目前在国内市场的使用范围比较小。本文中
所设计的智能干手器优化了系统电路工作,成本小、干手方便,具有非常广阔的市场发展前景。
国内市场上的自动干手器,主要使用数字集成电路和555定时器,加以控制,但由于在电阻和电容之间形成的振
荡信息,在经过长时间应用后会随着电容容量的改变,使嵌入式集成电路管理工作混乱不稳定,存在着一定的安全
隐患。本设计中使用STM32单片机对系统电路的开闭进行控制,在大限度上减少了上述问题,使干手器的操作流程更
为平稳准确,并且还能够实现更多用途。
1.3本文的结构安排
本文的目的是设计一个干手器,选用接口多,运行速度快的嵌入式STM32单片机为控制中心,设计出1套红外传感,
节能环保的干手器
本文各章节内容安排如下:
第一章为系统综述,主要阐述了本文的研究意义、国内外研究现状、研究内容及结构安排。
第二章系统总体设计部分,叙述了总体设计要求,另外通过对总体方案的论证与选择,对原本设计主控模块与
几个备选方案进行了优势对比,阐述了选择的原因,同时比较了两种方案。
第三章是整个干手器的系统设计部分,包含系统的总电路图和各个模块的介绍,设计其中包括STM32单片机、红
外避障传感器、继电器控制、风扇控制,四个部分的详细介绍。
第四章系统软件设计部分,包含编程语言的选择、Keil程序开发环境、FlyMcu程序烧录和CH340串口程序烧写以
及程序流程图
第五章硬件组装和调试部分,包含元器件的选择测量、焊接组装和调试,以及整机联调和分析总结调试中遇到
的问题。
第二章 系统总体设计
2.1本文的主要研究内容
当前市面上大部分的自动干手器控制电路采用的是555时基电路和数字式集成电路。但是,由于采用了许多离散的元
件,例如电阻和电容,造成了很大的电磁干扰,所以工作并不稳定。
本文通过研究红外传感采集避障信号、单片机实现对电路控制的方案,解决了以上问题,克服了上述缺点。另一方
面,本设计通过红外传感,采用单片机控制继电器闭合的方式,来控制水龙头的出水。拓展了洗手功能,可以做到
干洗一体,减少对水资源的浪费,利于环境的保护。而且用单片机和红外感应设计的干手器还具有实现烘手时间可
调、防抖动等具有人性化的功能。
本设计以STM32为核心控制芯片,红外避障传感器,利用红外探头采集信号传递到单片机,从而对继电器和风扇
进行控制。设计研究的干手器,电源通电后,红外避障传感器检测到障碍后,LED指示灯亮,继电器打开3s,水龙头
打开,进行洗手。3s以后,继电器关闭,LED指示灯灭,风扇转动。风扇转动3s,将手吹干,然后风扇关闭,干手器
处于待机状态。当红外避障传感器再次检测到障碍后,重复上述操作。
我们所使用的干手器可以实现如下功能:
(1)能自动识别手掌的靠近程度,当手掌接近时,继电器打开,同时LED灯亮,水龙头打开进行洗手
(2)水龙头打开3s后,自动关闭,风扇转动,开始干手,延迟3秒钟关闭风机,可以避免暂时的离开而导致干手器
的开闭,从而破坏元件。
(3)连续工作3秒后(可更改)风扇暂停工作,以免机器内部的过热损坏。
系统总体方案的结构图,如图1.1所显示。
图1.1系统总体设计结构图
2.2方案选择
2.2.1单片机的选择
方案一:使用传统的AT89C51单片机芯片,AT89C51是由美国Atmel企业开发的,这是一款自带4K字节数的可编程
可擦除式只读写寄存器(FPEROM-Flash Programmable ErasableRead 0nly Memory)且具有较少电流、效率高的8位
微处理机,俗称51单片机。它也可以和MCS-51相容。但是有存储空间比较小,接口较少,不利于功能地拓展的缺
点。
方法二:采用嵌入式STM32单片机,STM32处理器为美国Microelectronics ST公司设计制造的,基于ARM 7架构
的32位微控制器,并支持实时的模拟仿真与监控功能。它采用专业为需求效率高、廉价、低耗电量的嵌入式应用领
域而专业产品设计的ARM Cortex-M核心,并且拥有世界一流的外设。使用用途相当广的arm核心。集成了相当大量的
接口,通信模组和其他功能模块。开发工具,相当完善,开发资源也相当充足。
综上所述, STC89C51单片机它的存储空间比较小,接口较少,不利于功能的拓展。STM32单片机具有低功耗、
低成本、高性能的特点,卓越的实时特性,优秀的功耗控制管理,以及出众和创新性的外设。最高程度地集成与整
合便于产品开发,也可使产品迅速地进入市场。本文系统设计不要求成本的较低或更小的功率,而是在满足本控制
系统设计功能的前提条件下,还可以供给更多样的接口技术和控制功能,方便于产品设计实验系统中各实验项目需
要的外设与扩展电路。
根据上述分析,选择方法二,用STM32单片机作控制器。
2.2.2红外传感器的选择
方案一:使用红外热释电传感器。红外线感应系统采用热释电传感器处理芯片BIS0001, 配合人体热释探头来
实现。手掌进入热释电红外线传感器(PIR)的监测区域时,PIR便将监测到的手掌放射出的红外信号转变为低频
(0.5~9Hz)的电信号,加至BISS0001的运算放大器的进口端(14脚),再经过扩散、过滤和处理之后,在其出口端
(2脚)上形成了带有相应延时的高电平的信息。将所获得的高电平信息输入到单片机控制器接口中,这样就实现了
对手掌信号的采集,完成干手器的信号采集传输工作.电路框图如下
图2.1 方案一电路框图
方法二:使用红外避障传感器,红外线感应系统主要用红外对管来实现。由单片机生成产生4000HZ的方波信
号,并引导红外发射管向下发出红外脉冲信号.当有手掌伸入干手器底部后,发出的红外脉冲被反射回去后,被红外
线接受管吸收并转化为电信号,电信号经运放信号放大后把所产生的红外方波信号发送至单片机,并以此完成了对
人体信息的收集工作。在单片机量到人体信息后,通过调节继电器开关闭合来实现洗干一体的干手器的设计。电路
框图如下
图2.2 方案二电路框图
综上所述,红外避障传感器的红外线感应模块用红外对管来实现。在上面的两种方案中,很容易发现,方案二
电路结构简洁,控制系统可靠性较高,满足了工程的需要。方案一线路较复杂,输出的信息有一定延迟,而且在感
受人体信号时也没有很平稳。据此,可以综合思考后选用方案二,因为这种系统设计的自动干手仪器有成本小、运
行稳定好的优点。
第三章 系统硬件设计
3.1系统的总电路图设计
本设计是以STM32单片机为核心的干手器,可以应用于各种商城、机场或火车站、餐厅等人流量密集的场所。本
系统由五部分组成,既STM32单片机、红外避障传感器、继电器控制、风扇控制及电源组成。
干手器的工作过程为:当红外避障传感器检测到手掌后,继电器打开3s左右,水龙头打开。同时,LED灯亮。3s以
后,继电器关闭,LED灯灭。风扇打开3s,将手吹干,然后风扇关闭。另外红外检测具有防止抖动功能。
本次的设计图纸在设计的时候步骤如下:
1.建立原理图文件。在你开始设计一个系统前,你得先做一个草稿设计,构思好大概的原理图。这意味着,你必须
了解你所设计的项目需要哪些项目来完成,通过使用 AltiumDesigner 10软件来完成电路原理图的制作。
2.把工作环境设定好,设定与实际电路复杂度相符的绘图大小。在电路的设计中,要做到可以随时调节图纸的大
小。正确地设定图纸的大小是进行原理图设计的首要步骤。
3元件安置。从元件库中选取需要的元件,按图纸上的要求找到合适位置后摆放好。定义并设置元件的名称、封装,
并根据元件的位置和之间的走线,对部件的位置进行调整,使其在设计中的位置更加清晰,更加美观。
4.原理图布线。在原理图布线中,利用软件所提供的各类工具和指示,按照实际线路的要求,将工作台上的元件用
导线连接起来,从而构成一套完整的线路图。
综上步骤,本文的电路原理图如下
图3.1系统的总电路图
3.2单片机最小系统
3.2.1 主控模块简介
STM32数据处理器,是美国microelectronics ST公司设计制造的采用ARM 7体系结构的三十二位微控制器,支持
实时的仿真与监控。STM32系列数据处理器,是由意法半导体ST有限公司设计制造的一款采用了ARM7结构的32位、支
持现场模拟与跟踪功能的微控制器。选用该套主控芯片主要是因为本系列设计并不是为了要求成本的最小化或更小
的功耗,而且在满足原本所设计功能的前提条件下还可以提出更丰富多彩的接口技术和控制功用,以便于产品设计
实验系统中各实验项目需要的外设扩展电路。
STM32的主要优点:
(1)使用了ARM公司最新的、先进结构的Cortex-M3内核
(2)优异的实时性能
(3)杰出的功耗控制
(4)出众及创新的外设
(5)最大程度地集成整合
(6)易于开发,并使产品迅速发展将走向成功市场
STM32单片机引脚图如下
STM32F103单片机用LQFP 48 封装,并配备64KB的Flash存储器。其最高工作频率72MHz,带有20KB的SRAM,2个12位
ADC(模数转换器),7路DMA控制器并支持定时器、ADC、SPI、IIC等的DMA控制器。同时带有7个定时器,多达9个通
信接口(2个IIC、3个USART、2个SPI、一个CAN接口、一个USB2.0)
由于引脚有限,很多IO口都是功能复用,下图3.3是其IO功能复用情况。
3.2.2 红外避障传感器模块电路设计
红外避障传感器采用的是E18-D80NK-N,这是一款集发送和接收功能于一身的光伏发电传感器,发射光经过调节
后发送,同时接收头对反射光经过解调进行输出。从而有效地防止了对热成像的干扰。
检测障碍物的高度,可以按照需要使用尾部的电位器球形把手加以调整。该传感器具备检测距离较远、受可见
光波段影响小、价格相对便宜、容易安装、使用方便等优点,能够应用于工厂人员探测定位、流水线计件工资管理
等诸多场合。使用案例:生产线货物自动计量装置、多功能提醒机、走迷宫的自动化机器人等。
实物图及电路图如下
图3.4传感器实物图
图3.5 传感器电路图
3.2.3 5V散热风扇控制电路(高电平有效)设计
散热片风机控制系统的运行原理,主要是通过能量变换来实现的,即:能量→电磁能→机械能→动能。但由于
单片机控制器无法直接驱动热振动风机,于是引入了三极管来进行对散热片风机控制系统的管理,电阻的作用是为
限流阻值,来保证三极管。当单片机的相关控制的引脚设计为高电流态下,三极管导通,风机工作;否则,风机将
不能转动。
3.2.4 5V继电器控制电路(高电平有效)设计
在本系统中,使用了三极管驱动继电器控制,在单片机的控制引脚是高电平时,三极管导通,此时继电器供电
自动闭合,指示灯LED点亮,与LED灯串联的电阻,用来限流从而保护LED指示灯,与三极管基集相连的电阻也是限流
功能,保护三极管。继电器控制电路的基本原理图如下图3.6所示。
图3.7 5V继电器控制电路图
第四章 软件设计
4.1程序语言及开发环境
产品的设计和功能的实现,除了硬件设计部分外,还有软件设计部分。本设计中,因为整个程序相对地比较复杂,
且运行工作量较大,所以程序的编写采用了C语言。
本设计中单片机开发设计平台是Keil。Keil是由美国Keil software软件公司出品的支持众多单片机开发的C程
序语言开发系统平台。在功能、结构、可读性、可读性和维护上,它比汇编程序更易于学习和应用,所以易学易
用。Keil提供了一个包括C翻译器、宏汇编、链接器、数据库系统,以及一个功能较强的仿真调试器等方面的完整开
发案, 并采取了一种高度集成的设计环境(μ Vision)把上述方面整合到了一块。
Keil uVision5开发界面图如下
图4.1 keil开发界面
4.2 程序烧录
FlyMcu是一款非常好用的stm32烧录编程程序软件,对专业的单片机开发人员而言十分合适,它很广泛地运用在
集成电路程序设计(ICP)和应用程序设计(IAP)等方面,能用于实现程序编程、校验、读取器件信号。
单片机开发板、下载器等与PC连接好之后,先要在应用软件中选定字串口号,然后再选择项目程序hex文档所属
的位置,单击开启动编程(P)的按键,才能加载项目程序。具体加载页面将如下图所示:
图4.2 FlyMcu界面
本设计采用了CH340串口烧写模组实现对单片机程序的烧写。CH340串口烧写模组采用USB接口,非常便捷地解决
了传统笔记本电脑应用中对STC一系列单片机的编程烧。同时,由于CH340下载器具有低价格低成本、效率高的特
点,是开发STC一系列数字单片机的首选优质开发工具。
一、CH340串口烧写模块引脚说明
(1)+5V输出,因有USB电源线,故本开发板不接。
(2)VCC 本开发板不接,不需要
(3)3.3V输出,本开发板不接,不需要
(4)TXD 接单片机的RXD引脚
(5)RXD 接单片机的RXD引脚
(6)GND 接GND。
二、CH340串口烧写模块与单片机的具体接线图,如表所述。
CH340模块 单片机开发板
TXD RXD(单片机引脚PA10)
RXD TXD(单片机引脚PA9)
GND GND
4.3 程序流程图设计
4.3.1总体程序流程图设计
软件设计方式采用模块化,将所有功能细分为独立模块,一起执行管理系统和监控程序。系统整体流程图,如图4.4
所示。
图4.4 系统整体流程图
4.3.2主系统程序设计
系统控制器的核心硬件芯片是stm32,通过控制5V继电器电路以及红外避障传感器来实现干手器功能。首先,初
始化单片机外围设备状况,接着是初化单片机定时器,之后进入循环,读取红外探头是否有信号以及控制继电器来
控制水龙头出水。设置电路的时间差,继电器电路中继电器关闭的瞬间,风扇控制电路的电机转动。继电器吸合的
操作由程式中主函数,通过标记为Flag的状态来完成。其主程序流程如下:
4.3.3定时中断程序的设计
本设计中继电器的吸合来控制水龙头出水,3s即水龙头的工作时间,50ms为定时器的溢出时间,即中断计数器
标志位flag达到20次时就代表1s的时间。3s后,led灯灭,水龙头关闭,进而风扇转动,工作时间为3s
第五章硬件组装和调试
5.1元器件的组成与测量
本次设计的电子元器件主要有:STM32单片机、电阻、电容、按钮、电源、三极管、二极管、红外避障传感器、
继电器、万用板、导线、LED灯等。上述每种电子元器件的接口引脚正负极都要求我们仔细地查看资料,熟悉各种元
件的特点后再加以焊接。其中在检测前需要特别关注元电子器件的正负极特性,电阻电容尺寸、晶片导线排列方式
等具体环节。上述的电子元器件,在电子元器件商场很容易购买,或者通过淘宝等电商渠道购买。
5.2元件的焊接与组装
组装电路通常采用电烙铁沾锡焊接的方法,焊接前需要注意以下几方面。
连接电路一般采取连接和在欧包板上插接二个方式,不管采取哪种方式都要考虑如下几个方面。
1.每个元器件在装配前应尽可能地检测一次,以确保所有元器件都符合要求。
2.各种集成电路的安装位置要一致,以便于合理进行焊接合理安排接线。
3.焊接元器件时应仔细辨明元器件的正反方向,对有正负极特性的电子元器件,安装时要格外小心,不然将会造成
试验错误,甚至烧坏电路板。
4.为了保证所有线路都可以正常运作和调测,各种地线不得不联系到起来,共同组成了一条共同参照点。
5.合理的装配方式和合理地布置,不但能保证电路整洁优美、运行安全可靠,同时有利于检查、调试和排除故障。
5.3电路的调试
本系统中由STM32单片机、红外避障传感器、继电器控制、风扇控制等几部分构成,系统硬件图如5.1、5.2所示。编
程调试时,要将控制系统的所有模组分别调试,使其最佳状态。
调试工作,是指对系统的调节、完善和试验。检测一般是在集成电路安装好后,对集成电路的技术参数和实际
工作状况加以检测。而调节则是在检测的基础上对集成电路的部分技术参数加以调节,使符合工程设计要求。在实
施调试操作前应先制定出具体测试项目、测试步骤、调试方案以及所使用仪器设备等,以达到心中有数,并保证调试工作的顺利完成。
系统在上电前,应该确保以下几点
(1)电源总开关保持在关闭状况下;并检查红外臂章感应器是否设置良好。上述检测工作结束后,就可以为系
统供电了;
(2)启动后,工作过程观察LED表示状况和传感器指示灯;
(3)红外传感器在检测状态下,一旦有手通过时,LED灯亮,继电器闭合
调试部分重点关注以下两个部分:
(1)设定测试计时器中初始化部分的定时器初值;;
(2)调试时红外传感器灵敏度问题。
5.4 整机联调
所有的电路在调试好之后,也并不见得由这些构成的整个集成电路性能就一定会好,所以也必须做好整个的集
成电路调试。整体电路调试重点是监视和检测动态特性,将检查的成果与设计指标逐项对照,查找问题及答案,进
而对线路及其技术参数加以调整,直至整个线路的特性完全符合工程设计要求为止。
5.5 调试中遇到的问题
在本次的设计和焊接过程中,调试花了我很长时间,出现了各种各样的问题。事后发现,这些问题中大多数都
出现在焊接上,空焊、虚焊导致的短路断路。在焊点比较密集集中的区域,容易发生多点焊接,由于焊点比较集
中,不容易发现问题。为了解决和避免上述的问题,我上网查阅了大量资料,请教专业人士进行指导,终于成功完
成了设计。
图5.1电路板焊接实物图正面
图5.2电路板焊接实物图反面
结 论
从前几章中可以看出,通过本次基于STM32单片机的干手器设计,已达到了设定的技术要求,并能够做到洗手干
手一体的智能干手器。
本文中所设计的智能干手器主要由单片机最小控制系统,继电器电路,红外避障传感电路,以及散热风扇控制
电路等部分所构成,达到了设计要求和工作精度指标:
(1)控制系统的软件设计基本达到了所设计的要求,且使用简单,工作安全性可靠性高。
(2)控制器为了进一步提高在现场自然环境情况工作时的准确性和稳定程度,还完成了对部分硬件和软件的抗干扰设
计,效果很不错。
附 录
附录一:元件清单
附录二:PCB图
附录三:干手器工作状态实物图
绪论四 程序代码
main.c代码如下
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include <stdio.h>
#include "timer.h"
#include "key.h"
char dis0[17];
char dis1[17];
unsigned char runStep = 0;//运行过程
unsigned char relater = 0;//运行过程
unsigned char dealFlag = 0;//定时处理状态
int main(void)
{
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
TIM3_Int_Init(499,7199);
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //输入初始化
relay = 1;//初始化水泵
fan = 1;
delay_ms(100);
relay = 0;
fan = 0;
while(1)
{
if(redhot == 1) //检测到人体//**All notes can be deleted and modified**//
{
delay_ms(100); //清除抖动
if((redhot == 0)&&(runStep == 0)) //确定不在运行状态 切有遮挡
{
runStep = 1; //运行标志
relater = 3;
relay = 1;//打开继电器
fan = 0;//关闭风扇
}
}
if(dealFlag==1) //处理标志1s
{
dealFlag=0; //清空标志位
if(relater > 0)//延时--
{
relater--;
}
else
{
19
if( runStep == 1) //运行在第一步
{
runStep = 2; //运行标志
relater = 3;
relay = 0;//关闭继电器
fan = 1;//打开风扇
}
else if( runStep == 2) //运行在第三步
{
runStep = 0; //运行标志
relater = 0;
relay = 0;//关闭 继电器
fan = 0;//关闭 风扇
}
}
}
}
}
timer.c代码如下
//通用定时器中断初始化
//这里时钟选择为APB1的2倍,而APB1为36M
//arr:自动重装值。
//psc:时钟预分频数
//这里使用的是定时器3!
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
计数到5000为500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 10Khz的计数频
率
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的
时间基数单位
//**All notes can be deleted and modified**//
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
NVIC_Init(&NVIC_InitStructure); //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器
TIM_Cmd(TIM3, ENABLE); //使能TIMx外设
}
extern unsigned char firstin_r1 ; //首次接收到标志
extern unsigned char Count_r1; //串口接收计数
extern unsigned char uartbusy_r1; //串口判忙
extern unsigned char dealFlag ;
u32 time50ms=0; //50ms 时间片
void TIM3_IRQHandler(void) //TIM3中断
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx的中断待处理位:TIM 中断源
time50ms++;
if(time50ms%20==0) //更新处理标志
{
dealFlag=1; //处理标志置位
}
if(uartbusy_r1>0) //串口数据采集处理
{uartbusy_r1--;}
else
{
firstin_r1 =0;
Count_r1=0;
}
}
}