欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于STM32开路清障车控制系统设计.docx

    • 资源ID:96762946       资源大小:1.14MB        全文页数:33页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于STM32开路清障车控制系统设计.docx

    本科论文目 录摘 要IAbstractII引 言11总体方案论证与设计31.1设计方案31.2主控模块的选型和论证32系统硬件电路设计52.1主控模块设计52.1.1 STM32单片机概述52.1.2 STM32单片机最小系统电路52.2 MCU主要实现功能62.3火焰传感器72.4超声波模块82.5驱动模块102.6稳压模块112.7继电器模块123系统软件设计143.1编程工具Keil简介143.2程序设计原理143.3小车功能设计154系统调试16结 论18参考文献19附录1 系统原理图21附录2 主要程序22致 谢30本科论文摘 要近年来随着科技的快速的向前推进,伴随着单片机及其应用方面的技术不断开发与优化,单片机大量应用于生活的各个领域,高性价比和功能更为强大的单片机甚至应用于军事科研领域,警用机器人就大量使用单片机作为主控芯片,更强大的功能,也为机器人完成复杂的任务提供高质量的保障。为了应对未来复杂的战场和道路情况,警用机器人虽然可以完成城市反恐任务,但是对于复杂地形,却缺乏一定的环境适应能力,对于野外使用,阻碍众多;军队中的侦察和探明路况的任务,任务繁杂,但又是行军中不可或缺的重要一环,结合这两种情况,一种能够适应野外复杂地形,并且兼顾清理障碍的野外作战的开路清障车应运而生。开路清障车可以通过车载的各个高性能模块,应对道路上的各种突发情况,利用火力模块进行大型障碍物清理,火焰模块解除火情,从而降低野外行军风险,为部队快速开辟安全道路,实现快速高效的行军。本次设计利用STM32单片机芯片为核心控制器实现开路清障车控制系统的逻辑控制,包含火焰传感器、驱动模块、超声波模块等外围电路。通过实践结果表明,以STM32系列芯片为主的设计可以满足整体需求,预期的功能均可实现。关键词:单片机;警用机器人;超声波模块;传感器AbstractAlong with the rapid advance of science and technology in recent years, with the continuous development and single-chip computer technology and its application to optimize, MCU used in every field of life in great quantities, cost-effective and more powerful SCM applied in military scientific research, and even police robot is extensive use of single chip microcomputer as main control chip, the more powerful features, also provides the high quality for the robot to accomplish complex tasks.In order to cope with the complex battlefield and road situation in the future, although the police robot can complete the anti-terrorist task in the city, it lacks the ability to adapt to the environment for the complex terrain.The task of reconnaissance and road condition exploration in the army is complicated, but it is also an indispensable and important part of the march. In combination with these two situations, a kind of open road clearing vehicle that can adapt to the complex terrain in the field and take account of the obstacles in the field operation came into being.The open-circuit block removers can deal with various emergencies on the road through various high-performance modules on the vehicle, use the firepower module to clean up large obstacles, and the flame module to remove the fire, so as to reduce the risk of wild marching, open up a safe road for the troops quickly, and realize fast and efficient marching.This design USES the STM32 micro controller chip as the core controller to realize the logic control of the open circuit troubleshooting vehicle control system, including the flame sensor, driving module, ultrasonic module and other peripheral circuits.The results of practice show that the design of STM32 series chips can meet the overall requirements and all the expected functions can be realized.Keywords: Single Chip Microcomputer; Police robots; ultrasonic module; Sensor引 言1 作用和意义在部队行军中,部队大都会派遣侦察兵,在前方进行侦察并探明路况,为大部队开拓道路,当遭遇到中大型的障碍物时候,需要汇报回大部队,大部队派出工兵或者装甲车进行爆破清理。对于瞬息万变的战场,这无疑会耗费大量的时间和精力甚至贻误战机。而在城市反恐作战中,特警配备有排爆机器人,用于运输危险品,远程排爆作业,用来降低人员伤亡,增加安全保障,可以应对一般的反恐作业1。为了应对未来复杂的战场和道路情况,排爆机器人虽然可以完成城市反恐任务,但是对于复杂地形,却缺乏一定的环境适应能力,对于野外使用,阻碍众多;军队中的侦察和探明路况的任务,任务繁杂,但又是行军中不可或缺的重要一环,结合这两种情况,一种能够适用于适应野外复杂地形兼顾清理障碍的野外作战的开路清障开路车应运而生。可以为行军降低风险,节省人力物力2。本次课题所研究的开路清障车车可以为大部队快速开辟行军路线,清理沿途障碍,对于不同的道路情况,可以进行灭火,开辟隔离区,清除道路障碍物,并且做到低风险高机动,可以大大节省部队行军所需的时间,同时此次的开路清障车整体所需材料简易,造价较低,也具有良好的推广性和实用性。2 研究概况及意义单片机的优点是体积小、扩展灵活、高性价比、高可靠性和功耗低,单片机从开始试验到现在的广泛应用,仅仅使用了几十年的时间,从最开始的大型设备,到现在的精密仪器都可以见到他们的身影。遍布于大多数电子设备之中。单片机是微型控制执行器的简称,它能够实现基本的计算机功能,是最简单的计算机,称得上是应用最多的计算机了,因为它小巧而精致,使用范围比较广阔。平常用到的手机、电脑、家用电器等产品中配有单片机,单片机在信息安全控制系统发挥出重大的作用2。本文利用单片机为核心控制实现了一个基于STM32的开路清障车控制系统。在设计之中,所使用到的硬件方面的模块有单片机主控模块、火焰传感器、驱动模块、超声波模块等。本文先对要采用的主要芯片以及各个模块进行分析, 选择要制作物理对象的组件,选择一系列需要的组件,包括满足系统要求的各种指定型号,课题总体系统方案的设计,硬件方面具体的方案及实现,物理调试和试验完成后,记录每次调试和比较得到的数据Error! Reference source not found.。3 研究的具体工作(1)采用火焰感知模块实现火情的感知,火焰模块中含有红外火焰传感器,以及灭火装置,检测火焰并解除火情。(2)采用超声波模块实现对道路上障碍物检测,为车辆避障和清障提供准确的障碍物位置以及障碍物的清理情况。(3)采用火力系统作为本次设计的主动清障单元,仿照枪械激发装置,发射弹药对目标障碍物进行清理,为车辆前进清除较大的障碍物,使车辆可以快速开辟安全通道,快速通过。4 解决的主要问题本课题是设计类课题,在设计之初,对于整体设计可能遇到的问题有了一个整体的预估,所需重点解决的问题:(1)车辆稳定性不足:车辆的运行时候,由于地形复杂,有高坡,低谷,碎石等,这要求车辆要有足够的抓地力,为解决这个需求,本次设计中仿照涡轮增压的原理,利用风扇对车辆进行负压,使得其稳定性增加,同时负压能够使车辆可以承受射击装置。(2)车辆清障方式单一:在清理大中型障碍物时,常用的将障碍物整体移走的方法难以实现,需要将中大型障碍物分割处理,再分次移开,为应对这种情况,本次设计采用枪械的发射装置对障碍物进行射击,击碎障碍物,然后进行进行清理。1总体方案论证与设计1.1设计方案以基于STM32的开路清障车控制系统设计,根据功能来进行划分,包括:主要的控制模块(单片机最小系统)、进行检测的模块(火焰传感器、超声波模块)、驱动模块。在这个以单片机作为核心的基于STM32的开路清障车控制系统设计,作为主控的单片机模块是系统的核心处理部分,可以协调其他模块一起工作,下面就针对这几个模块的选型进行讨论。设计框图,如图1.1所示。图1.1设计框图1.2主控模块的选型和论证本次设计从功能上进行分析,对于主芯片的选择,查阅了相关的资料,并综合的分析了在设计之中的实用性与可靠性,综合拟定的有以下两种比较可行的参考方案:方案一、采用STC89C52单片机。STC89C52单片机是51系列的单片机,来源于STC公司,继承51系列单片机的优良传统Error! Reference source not found.。而其中有8k的存储空间,可烧录进入大量的程序,具有很多传统的51系列单片机优秀的编写方式,更灵活、效率更高,在解决问题时也更有效。方案二:STM32单片机是专为要求高性能、低成本、低功耗的嵌入式应用设计的,其STM32系列分类众多,可选择性更强,其中STM32F为通用系列,STM32F103为主流级单片机,拥有72MHZ的CPU,最高可以达到1M的Flash容量,且兼具电机控制功能,现在也是越来越流行的趋势。本次设计中,需要用到多个电机,且需要对多个电机控制,这对软件和硬件都有一定的要求,52单片机虽然可以基本满足,但是操作起来极为繁琐,而STM32拥有更高的处理速度和更多的扩展功能,性价比更高,根据以上所述综合考虑,最终本次的课题设计的主芯片选择的是STM32系列单片机。2系统硬件电路设计2.1主控模块设计2.1.1 STM32单片机概述STM32这一款单片机是 ARM 公司推出了其全新的基于 ARMv7 架构的 32 位 CortexM3(72MHz) /M4(168MHz,额外增加了浮点运算)微控制器内核Error! Reference source not found.。STM32作为最新一代的单片机,有更强大的功能,更高的性能比。所以,本次设计采用了STM32芯片,一方面它的性能高,方便学习更多新的嵌入式技术;另一外面,跟紧时代的步伐,让自己在未来步入社会的时候更具优势Error! Reference source not found.。要完成本系统的设计,需要用到串口1、串口2、JTAG、LED、3.3v、5v引出等基本外设。串口1主要负责调试代码,与外接模块进行通信,直到各个模块能实现项目里的基本功能。连接过程中,应要认真对照着芯片原理图来进行,以防止接错线造成短路损坏模块。这个设计,我采用了高性能的ARM,这个芯片的最大运行速度为72MHZ,能在调节测试的过程中快速响应,能够高效率地处理各种复杂的运算。加上芯片本身丰富的资源,例如高精度的ADC、多个IO接口、还有I2C接口等,能适应各种各种的现场情况。2.1.2 STM32单片机最小系统电路单片机的最小系统电路,以STM32单片机和外部的一些电阻、晶振、电容等构建而成Error! Reference source not found.,接收来自各模块的信号并对其进行处理 , 然后将需要执行的命令信号再发往各模块, 主要负责协调各个模块的共同工作。复位电路是单片机最小系统中必不可少的一个模块,单片机的复位按键是由按键,电容与电阻组成的,在按键开关为关闭状态时,电源供电,电阻本身没有反应,但是电容可以存储电量,在这个时候电路中的电流值非常的小,基本可以说是没有。相对于电源的电压VCC来说,复位IO口的引脚是处于低电平状态,这个时候,单片机的工作状态没有收到干扰。当按键开关为关闭状态时,电源系统就会变成回路,在这个时候复位引脚的电压相比电源按键的电压是一样的,为5V高电平,单片机发出复位指令。晶振也是单片机最小系统里很重要的一部分,它由一个晶体和两个陶瓷电容器构成。其在单片机系统中的主要作用是结合内部的电路,产生单片机正常运行所必须的时钟频率,可以说它为单片机正常执行命令提供了重要的保障Error! Reference source not found.,通常情况下晶振电路提供的时钟频率越高,那么单片机的运行速度也就越快,从而系统工作的效率也会越高。在设计晶振电路时,需要注意晶振频率的选择,合适的晶振频率可以使本次系统发挥出最好的效果9。STM32F103C8T6原理图,如图2.1所示。图2.1 STM32F103C8T6原理图2.2 MCU主要实现功能通过上文的设计分析,每一种情况所对应的流程设计对对应着一些传感器。为方便程序的运行,对各个方面做出了相应的程序设计。MCU主要功能软件设计实现如下:高低电平控制实现,我们已经分析过了硬件电路,电磁铁的发生作用需要通过MCU输出的高低电平,单片机函数库中GPIO_SetBits(GPIOx,GPIO_Pin)和 GPIO_ResetBits(GPIO_GPIOx,GPI 0_Pin)分别将输出I/O 口置高、置低,如开启报警模块或者关闭报警模块时,PA12 口输出低电平配置GPIO_ResetBits(GPIOA,GPIO_Pin_12)10。I/O 口上升/下降沿中断实现,MCU会检测到相应的I/O 口的下降沿对外围的模块进行操作。单片机的所有的GPIO管脚都可以作为外部中断输入口,我们在这个单片机上,可以设置多种情况,上升沿或者下降沿触发中断,还可以同时设置中断的优先级。2.3火焰传感器本设计的主要模块之一为火焰传感器,红外火焰传感器使用特制的红外线接受管来检测火焰,实时监测环境中的火焰值11。然后把火焰的亮度转化为高低变化的电平信号,输入到中央处理器中,中央处理器根据信号的变化做出相应的程序处理使得灭火风扇开始运作,从而达到消除火焰的作用。火焰传感器检测火焰信号,火焰传感器的指示灯亮起,将接收到的信号通过STM32F103C8T6芯片的PA3接口传输给主控芯片,经处理将控制信号传递给各个模块,协调同步停车,并开启灭火装置,消除火情。火焰传感器内部原理图、火焰传感器原理图,如图2.2、2.3所示。图2.2 火焰传感器内部原理图图2.3 火焰传感器原理图2.4超声波模块本设计采用了HC-SR04超声波模块,在开路清障车上装载该模块让开路清障车检测到障碍物和与障碍物的距离,当到合适位置时便会启动其他模块协同清除障碍物。本次使用的超声波测距模块可以对2cm到400cm进行无接触测距感应,该模块由超声波发射器、接收器、控制电路组成12。TRIG端口为触发控制信号接入端口,ECHO为回响信号输出端口,二者分别对应STM32F103C8T6芯片的PB11,PB10接口,当检测到前方有障碍物时,会将信号通过端口传给主控芯片,主控芯片将信号处理,将控制信号传输个各个模块,从而完成,检测、清除、正常通行一系列功能。HC-SR04超声波模块原理图、HC-SR04超声波模块工作流程图,如图2.4、2.5所示。图2.4 HC-SR04超声波模块原理图图2.5 HC-SR04超声波模块工作流程图2.5驱动模块本设计装载了电机驱动模块,本次使用的电机驱动L298N是非常常用的电机驱动模块其成本不高且是一种双桥电机驱动芯片,在较高电流时输出可以并联,双桥每个H桥都可以有2A电流,但注意的是其功率电压小于6V将无法正常工作,L298N驱动模块可以很好的满足本次的设计,其驱动芯片、电路原理图如下图2.6、2.7所示。将四个驱动车辆前进的减速电机和一个负压模块电机连接在一个L298N电机驱动模块,发射装置和灭火模块连接在一个L298N电机驱动模块上,对不同的模块分开进行控制。-图2.6 L298N驱动芯片图2.7驱动模块2.6稳压模块本次设计使用的稳压模块能够很好的行使保护电路、热关断电路、限制电流等功能13,稳压模块可以将输出的电压的分压电阻的输出与内部基准稳压值比较,如果发现电压偏差,可使用放大器对内部振荡器进行控制调整其输出占空比,进而调整输出电压稳定,稳压模块原理图如图2.8所示。图2.8稳压模块2.7继电器模块本次设计中采用本次选用2路光耦-高低电平继电器模块,当LOW端与公共端接通时,为低电平触发;当HIGH端与公共端接通时,为高电平触发,光耦继电器就是固态继电器,用光耦驱动可控硅,控制光耦端给合适的电信号,这样,光耦另一端光三极管,得信号导通,驱动可控硅导通。继电器模块如图2.9所示。图2.9继电器模块3系统软件设计3.1编程工具Keil简介STM32单片机软件开发环境使用的是有德国的KEIL公司推出的keil软件14。根据不完全统计,全球大约十万的科研人员在使用这一款软件,在官网上可以看到起目前最新的版本是5.5。使用这一个版本不仅仅能够开发我们目前使用的STM32单片机,还可以开发由全球数百个开发公司所开发的芯片,知名的包括51,DSP等等。由它编译生成的代码效率极高稳定性很好并且能够实现程序的编译、编写、承接、调测、仿真等全部的开发流程。同时,使用Keil5也对STM32单片机的开发有了针对性的优化,相比较传统模式的开发方式原开发界面,这样一个编译器是非常好用的15。Keil5的界面,如图3.1所示。图3.1 Keil uVision53.2程序设计原理本文的程序设计内容主要包含数据分析、电机控制。在软件设计中如果采用的是传统的整体代码编写,出错的概率可能会有点大,甚至有时候可能连错在哪里都找不出来,这样花费的人力物力成本太大。所以本次软件的设计选择的是模块化的设计,模块化的设计将一个程序分成几个模块来编写,这里的模块指的是那些可以单独拿出来运行的程序。这样如果有错,就会很容易的就可以将它找出来,这样对于我们来说调试起来很方便。模块化程序设计有以下好处:(1)每个模块都是可以分开来写,而且调试起来也很方便;(2)每个模块完成的功能都是独立,不会互相影响17;3.3小车功能设计当小车开始驱动时,小车运行前进,当小车前进时检测到了火焰,开启灭火风扇进行灭火,灭火三秒后,再次检测火焰是否还在,若还在则绕行,未检测到则继续前行,当检测到路线有障碍物时,会开启火力系统,发动火力清理障碍物,五秒后,再次检测,若障碍物还在,无法清除,则绕行避开,若已清除检测不到,则继续前行。本设计的开路清障车程序功能设计,如图3.2所示。图3.2小车功能流程图4系统调试系统测试最重要的目的是判断系统是否可以正常运行系统所开发的功能模块能否进行正常的操作以及程序代码中是否存在错误。测试程序是开发过程中的一个必不可少又极其重要的环节18。这是因为就算系统被认为设计的再完美其在进行程序测试时也会被发现一个此前从来没有被发现的错误。在制作硬件电路之前,我们先根据实际需要的功能划分硬件模块,并且在AD里面画出其硬件原理图和PCB图,检查无误后开始焊接19。在实际制作过程中也不是一帆风顺的,在硬件做好调试过程中,所测数据不变动、或不显示,经检查硬件电路,使用万用表量通断发现,部分导线可能不通,存在虚焊现象,导致整个设计无法正常运行。重新焊接该部分导线,焊接牢固后,问题才可以解决。在后期调试过程中,前置的L298N驱动模块(连接发射装置和灭火装置)经常过热,并伴有塑料焦糊味,随后出现了,发射装置和灭火装置失灵,一时间设计搁置。在遇到硬件问题时,常用排除法排杂,所以先列出了可能存在的情况:存在虚焊情况,发射装置和灭火装置损坏,L298N驱动模块损坏等。先给发射装置和灭火装置外接电源,发现二者均可工作,且传感器均有反应,故排除二者损坏的可能,使用万用表对以上情况一一排除,首先排除了存在虚焊的情况,当检查驱动模块时,发现装置供电LED正常点亮,模块供电正常,用万用表检查模块各个元件,发现L298N驱动芯片损坏,于是更换了L298N驱动模块,装置可以正常使用,并且在后面调试时对连续调试时间进行缩短,给L298N驱动芯片足够的散热时间,延长其使用寿命。实物展示图、实物调试图,如图4.1、4.2所示。图4.1 实物展示图图4.2 实物调试图结 论本文开篇便先对系统进行了分析,并且向大家条理清晰有逻辑地介绍了设计的开发背景、设计思想和研究内容等。我们还对软件的设计方案进行了全局性的规划和详尽的设计。全局性的规划主要包括总体功能规划,系统总体结构规划等;最后我们还对整体设计进行了调试,并且对调试的结果进行了分析和总结20。这从很大程度上帮助我们进一步的找到系统的缺陷与需要进行升级优化处理的地方,大大的更便于后面,当设计作品出现问题时候,我们如何对整体作品进行排杂和维护。基于总体设计方案,本文完成了系统的软件设计和硬件设计。通过实际操作验证了序列的准备和调试,取得了满意的效果。在这个进行毕业性的项目设计的过程中,我学习到了很多也成长了很多。在设计中,我对大学生涯所学的专业知识与其的实际应用有了更深入的理解和新的经验。基本上,我已经意识到我学到的知识并应用它,我也意识到规范化的整体设计流程的重要性以及整体作品的调试和维护的必要性。通过这次毕业性的项目设计,使我得到了一次用专业所学习的知识、专业技术和能力分析以及一些解决相关问题方面得到更加完完整整的锤炼。使我在微型处理器的基础性的原理、微处理器方面实际使用的系统所需要开发的流程中,以及在常用编写程序设计思想路线和技巧(特别是 C 语言)的掌握方面都能往前面迈进了一步,为日后成为实用型奠定良好的基础。参考文献1 耿文静, 吴华. 应用型本科院校单片机原理及应用课程教学研究J. 科技视界, 2017(04) :1862 汤辛华. 道路清障车的4大发展趋势J. 商用汽车,2009(01) :96-973 金琦淳, 倪月, 刘清翔等. 案例式教学在单片机原理及接口技术课程中的应用J. 装备制造技术, 2015(01) :216-2184 肖军. 我国道路清障车现状及发展前景J. 商用汽车,2014(06) :24-305 赵华峰. 基于单片机的家居智能系统设计与实现J. 信息与电脑(理论版),2018(22) :134-1366 郁美霞. 基于校园卡的智能储物柜人机交互系统的设计D. 兰州交通大学, 2015 :42-447 李琪琪, 杨冲, 张芳芳等. 小区物业智能快递储物柜系统研究J. 现代物业(中旬刊), 2019(06) :308 徐爱昆, 康怡琳, 顾珉光等. 智慧校园储物柜的多功能控制系统设计J. 单片机与嵌入式系统应用, 2019,19(01) :69-729 张立立,尹国成,孙尚超. 基于MCU技术的数据采集系统的硬件设计与实现J. 电子世界,2013(21) :128+14310 宁志超. 基于ATmega16的六自由度果实采摘机械手控制系统的设计D. 东北农业大学,2010 :42-4311 宋珂. 自动售票机硬币处理装置控制系统的设计与开发D. 南京理工大学,2017 :54-5512 董刚. 智能小车运动控制系统研制D. 西安科技大学,2009 :32-3313 章叶骏. ASR机器人系统中无线语音控制系统的应用研究D. 合肥工业大学,2008 :25-2614 周柱. 基于STM32的智能小车研究D. 西南交通大学,2011 :24-26 15 吴慧玲. 基于多传感器的移动机器人避障策略的研究D. 沈阳大学,2013 :45-4616 谢留威. 基于虚拟样机的气体连续发射轻小目标装置的研制D.哈尔滨工业大学,2017 :47-4917 马庆乐. 基于路径规划及避障的自主导览互动讲解机器人研制D. 兰州理工大学,2017 :36-3718 王时群. 智能吸尘器红外避障控制系统研究D. 海南大学,2015 :24-2519 吴迪. 锂电池充电控制与管理方法研究D. 北京交通大学,2015 :45-4620 朱恩亮. 基于ARM的灭火机器人设计与制作D. 电子科技大学,2011 :25-26附录1 系统原理图附录2 主要程序#include "delay.h"#include "sys.h"#include "usart.h" #include "led.h"#include "key.h"/超声波硬件接口定义#define HCSR04_PORT GPIOB#define HCSR04_CLK RCC_APB2Periph_GPIOB#define HCSR04_TRIG GPIO_Pin_11#define HCSR04_ECHO GPIO_Pin_10 /超声波计数u16 msHcCount = 0;/定时器4设置void hcsr04_NVIC()NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);/IO口初始化 及其他初始化void Hcsr04Init() TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(HCSR04_CLK, ENABLE); GPIO_InitStructure.GPIO_Pin =HCSR04_TRIG; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(HCSR04_PORT, &GPIO_InitStructure); GPIO_ResetBits(HCSR04_PORT,HCSR04_TRIG); GPIO_InitStructure.GPIO_Pin = HCSR04_ECHO; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(HCSR04_PORT, &GPIO_InitStructure); GPIO_ResetBits(HCSR04_PORT,HCSR04_ECHO); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Period = (1000-1); TIM_TimeBaseStructure.TIM_Prescaler =(72-1); TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); TIM_ClearFlag(TIM4, TIM_FLAG_Update); TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE); hcsr04_NVIC(); TIM_Cmd(TIM4,DISABLE); /打开定时器4static void OpenTimerForHc() TIM_SetCounter(TIM4,0); msHcCount = 0; TIM_Cmd(TIM4, ENABLE); /关闭定时器4static void CloseTimerForHc() TIM_Cmd(TIM4, DISABLE); /定时器4终中断void TIM4_IRQHandler(void) if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); msHcCount+; /获取定时器4计数器值u32 GetEchoTimer(void) u32 t = 0; t = msHcCount*1000; t += TIM_GetCounter(TIM4); TIM4->CNT = 0; delay_ms(50); return t; /通过定时器4计数器值推算距离float Hcsr04GetLength(void ) u32 t = 0; int i = 0; float lengthTemp = 0; float sum = 0; while(i!=5) TRIG_Send = 1; delay_us(20); TRIG_Send = 0; while(ECHO_Reci = 0); OpenTimerForHc(); i = i + 1; while(ECHO_Reci = 1); CloseTimerForHc(); t = GetEchoTimer(); lengthTemp = (float)t/58.0);/cm sum = lengthTemp + sum ; lengthTemp = sum/5.0; return lengthTemp; void go() /前进GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_6); /PB.5 输出高GPIO_ResetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);void stop() /停止 GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7); /PB.5 输出?void left() /左GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6); /PB.5 输出高GPIO_ResetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_7);void right() /右GPIO_SetBits(GPIOA,GPIO_Pin_4|GPIO_Pin_7); /PB.5 输出高GPIO_ResetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_6);/测试主函数int main(void)

    注意事项

    本文(基于STM32开路清障车控制系统设计.docx)为本站会员(封****n)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开