欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    六脚爬虫机器人的机械结构以及控制程序的编写 自动化专业毕业设计 毕业论文.doc

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

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

    六脚爬虫机器人的机械结构以及控制程序的编写 自动化专业毕业设计 毕业论文.doc

    摘要本文详细介绍了六脚爬虫机器人的机械结构以及控制程序的编写。机械结构采用了对称式设计,结构简单;其行走功能由六只脚、18个舵机实现,自由度较高,稳定性、灵活性较好。控制程序的主体是C语言。包括基本步态的编写,以及传感器的在机器人上的高级应用,这样,机器人在满足基本行走运动的同时,也能感知外界环境,并通过控制器对接收到的外界信号进行处理,并控制机器人运动。关键词: 对称式结构,舵机控制器,步态,传感器AbstractThe thesis describes in detail that the mechanic design of Hexcrawler and the compiling of control program. The structure of the robot is in symmetric expression, a simple mechanism; the function of walking is supported by six legs, and eighteen motors, with multiple degrees of freedom. Besides, it is of high stability and flexibility. The program to control the robot is written in C language, including basic gait, the advanced application of sensors. Thereby, the robot can walk in several gaits. At the same time, it can sense the condition around it. Then, it will process the data it received, and control the motion of the robot.Keywords: symmetric expression,PSCU, gait, sensor目录摘要IAbstractII目录III1 绪论- 1 -1.1课题来源- 1 -1.2本课题的目的及其意义- 1 -1.3国内外发展现状- 1 -1.4本课题的研究内容- 5 -2 机械结构设计介绍- 6 -2.1 功能需求与分析- 6 -2.2 材料选择与结构设计介绍- 6 -3 舵机控制板原理与应用- 9 -3.1 舵机原理介绍- 9 -3.2 舵机控制板原理介绍- 10 -3.3 如何使用舵机控制板- 12 -3.4 控制板程序编写- 14 -4 STM32开发板介绍与程序编写- 18 -4.1 STM32F107芯片简介- 18 -4.2 软件与编程初始准备- 18 -4.3 GPIO与AFIO设置与应用- 18 -4.31 GPIO设置与应用.18 4.32 AFIO-I/O口重映射.22 4.4 USART设置与应用- 22 -4.5外部中断设置与应用- 26 -4.6 系统时钟设置与应用- 29 -4.61 系统时钟简介与应用.29 4.62 定时器配置31 4.7 机器人行走步态程序编写- 32 -4.71 机器人行走步态简介33 4.72 三脚步态.35 4.73 四脚步态.37 4.74 单脚(波动)步态.384.75 转弯与横爬步态.404.8 多传感器应用与程序编写- 43 -4.81 指南针传感器.434.82 红外、光敏传感器.454.83 柔性力传感器.464.84 温湿度、发声、射频识别(RFID)传感器.484.85 无线(Zigbee)传感器.494.86 超声传感器525总结- 55 -致谢- 56 -参考文献- 57 -1 绪论1.1课题来源本项目来源于华中科技大学与伍斯特理工学院合作的WPI项目。1.2本课题的目的及其意义机器人是高级整合控制论、机械电子、计算机、材料和仿生学的产物。现在,机器人已经发展到一个全新阶段,各种机器人应运而生,从简单地追求功能到神似,到个性化;从单单发展工业机器人到工业、家用机器人全面开花,并取得了长足进步。六脚机器人作为行走机器人的一种,具有结构简单,稳定性好等优点,而本课题也并未在很高深的机器人理论花大量功夫,而更多地着眼于为大专院校提供机器人教学平台,或者用于科技馆展览。本课题所设计的机器人最大的特点是:理论通俗易懂、操作方便、便于二次开发。对于一些入门者(初步掌握控制论、机械设计、机械电子只是)来说,很容易便能被引领入机器人研究的殿堂。1.3 国内外发展现状对于仿生机器人,尤其是多足机器人,国内外均有大量研究。1990年,美国卡内基梅隆大学研制出用于外星探测的六脚步行机器人AMBLER。该机器人采用了新型的“腿机构",并由一台32位的处理机来规划系统运动路线、制运动和监视系统的状态。但由于体积和质量太大,最终没被用于行星探测计划。1993年,卡内基梅隆大学开发出有缆的八足步行机器人DANTE,用于对南极的埃里伯斯火山进行了考察,其改进型也在实际中得到了应用。1994年二代对距离安克雷奇145km的斯伯火山进行了考察,并传回了各种数据及图像。日本对多足步行机的研究从20世纪80年代开始,并不断进行着技术创新,随着计算机和控制技术的发展,其机械结构由复杂到简单,其功能由单一功能到组合功能,并已研究出各种类型的步行机。主要有四足步行机、爬壁机器人、腿轮分离型步行机器人和手脚统一型步行机器人。1994年,日本电气通信大学的木村浩等研制成功四足步行机器人Patrush二代。该机器人用两个微处理机控制,采用直流伺服电机驱动,每个关节安装了一个光电码盘,每只脚安装了两个微开关,采用基于神经振荡子模型CPG的控制策略,能够实现不规则地面的自适应动态步行,显示了生物激励控制对未知的不规则地面有自适应能力的特点。20002003年,木村浩等又研制成功四足步行机器人Tekken。该机器人用一台PC机系统控制,用瑞士Maxon直流伺服电机驱动,能适应中等不规则表面的自适应步行。我国对于多足机器人的研究起步则较晚。1989年,北京航空航天大学在张启先教授的指导下,孙汉旭博士进行了四足步行机的研究,试制成功一台四足步行机。钱晋武博士研究地壁两用六脚步行机器人,并进行了步态和运动学方面的研究。1990年中国科学院沈阳自动化研究所研制出全方位六脚步行机,不仅能在平地步行,还能上楼梯。1991年,上海交通大学马培荪等研制出JTUWM 系列四足步行机器人。2000年,马培荪等对第一代形状记忆合金SMA驱动的微型六脚机器人进行改进,开发出具有全方位运动能力的微型双三足步行机器人其每条腿的自由度变为3个自由度。2003年哈尔滨工程大学的孟庆鑫、袁鹏等进行了两栖仿生机器蟹的研究,通过研究多足步行机的单足周期运动规律,提出适合于两栖仿生机器蟹的单足运动路线规划方法,建立了生成周期运动的神经振荡子模型。目前市场上几款六脚机器人对比如下:(一)DEPUSH HexCrawlerHexCrawlerCompanyDEPUSHMaterial5052 alloy aluminum, 1/16” thick with clear anodizingLeg Movement2 DOFDimensionsBody: 49.68 x 40 cm, Height: between 12.3 and 15.2 cmCost$350+(二)Lynxmotion RB-Lyn-248RB-Lyn-248CompanyLynxmotionMaterial5052 alloy aluminum, 1/16” thick with black anodizingLeg Movement3 DOFDimensionsBody: 19.1 x 14.9 cm, Height: between 5.1 and 13.3 cm, Ground Clearance: up to 8.9 cmCost$261.35+(三)HexCrawler HDATSHexCrawler HDATSCompanyDEPUSHMaterial5052 alloy aluminum, 1/16” thick with clear anodizingLeg Movement3 DOFDimensionsBody: 52 x 49.7 cm, Height: between 12.3 and 15.2 cm, Ground clearance: 12.7 cmCost¥ 10,000 (about $1,500)其中HexCrawler一代机器人使用的编程软件为Parallax公司提供的教育发展版芯片。图1.1为Phoenix公司提供的六脚机器人,图1.2则为Depush公司的六脚机器人一代外形,其每个脚仅有两个自由度。图1.1 Phoenix Hexapod图1.2 DEPUSH HexCrawler 1.01.4本课题的研究内容六脚机器人基本结构的设计,首先使之能够实现三脚步态、四脚步态、波动步态等,以满足行走要求;然后,能够感知外界环境的变化,实现避障报警等功能;最后,实现对机器人的远距离控制。具体要求为:设计机器人机械结构,使其可以完成前进,后退,左转,右转,侧移,扭动身躯等简单动作;可以完成抬脚,简单舞蹈等动作;1、编写机器人各种基本动作的软件代码,使其能完成以上动作;2、机器人可以接受电脑无线控制,编写相应无线控制程序;3、机器人可感知外界环境,编写相应传感器处理程序;4、对所有程序进行综合处理,协调各程序之间的关系。2 六脚机器人机械结构设计介绍2.1 功能需求与分析作为六脚仿生机器人,在追求神似的同时,关键在于能否像爬虫一样完成各种行走动作。本课题对机械结构的要求不高,但需要满足下面几点:灵活度高、稳定性好、能够实现多足机器人的基本步态。针对这几点,同时按照德普士公司的要求,再参照目前市面上存在的六脚仿生机器人,最终拟定的机械结构设计方案为:在DEPUSH HexCrawler 1.0(图1.2)的基础上每只脚增加一个舵机,即将自由度由两个提升为三个。2.2材料选择与结构设计介绍根据目前市面上的六脚仿真机器人,本课题选用5052铝合金作为机器人的主要材料,这样机器人既能满足强度要求,也能满足轻便性要求。同时,对外表进行烤漆处理,显得厚实而稳重,富有质感。如图2.1为机械结构的总三维图。图2.1 六脚机器人三维总图机器人整体上采用对称式结构,由六只脚和底架(身体)组成。每只脚有三个关节,每个关节处为采用舵机连接,可在固定平面内旋转180°,如图2.2所示。其中舵机1控制机器人脚前后摆动;舵机2控制机器人上下摆动;舵机3控制机器人内外伸缩。三个舵机配合即可实现机器人的走动。图2.2 六脚机器人单脚结构图机器人身体(图2.3)、脚(图2.2)上均布满各种镂空图案,主要有两点作用:一、减轻机器人重量;二、增加机器人的美观度。由于机器人的完全对称性结构,其前后由认为设定,即图2.1中Leg1、Leg4在前,Leg3、Leg6在后。图2.3 六脚机器人底架结构图 机器人的主要尺寸为: 机器人全长:500.0mm; 底架(身体宽):228.0mm; 舵机1(Leg1)距底架最前方距离:60.0mm; Leg1与Leg2距离:195.0mm; Leg1与Leg3距离:390.0mm;每只脚上舵机2与舵机3距离:120.0mm; 舵机3与脚底距离:150.0mm。3 舵机及舵机控制板原理与应用 本章主要介绍舵机以及舵机控制板(PSCU)的原理、使用方法与程序编写。3.1 舵机原理介绍舵机是一个通过输出轴的转动来控制物体转动的装置。它在特定编码的驱使下可以转动到工作范围内的任意给定位置。因为它的轻便,位置控制简易且精确,在机器人中使用尤多。多舵机的协调工作可满足机器人的多自由度要求。舵机可以实现0180°的旋转,当轴处于正确位置时,舵机将停止运动;当所在位置不对时,电路则驱动电机运转到需求位置。舵机是采用比例调节方式控制速度。当舵机转动的距离大时,则加载在舵机上的能量就大,反之亦然。而舵机的转动角度控制是由加载在控制线上的脉冲周期完成的,即所谓的脉冲编码调制。舵机设定为每隔20ms接受一个脉冲,这样的话,实际脉冲长度就可用来控制舵机转动的角度。如图3.1,例如1.5ms的脉冲可使舵机转动90°。图3.1 舵机转角与脉冲周期关系图本项目采用的事Hi-Tec公司生产的HS-322HD舵机,如图3.6。图3.6 HS-322HD舵机其主要技术参数如下:重量:43g尺寸:40×20×36.5mm拉力:4.8V 3Kg.cm拉力:6.0V 3.7Kg.cm转速:4.8V 0.19sec/60°转速:6.0V 0.15sec/60°计算电流:0.35A当舵机安装好后,需要获取其初始位置值,为编程做准备,具体可见3.3节关于PSCI软件的介绍。3.2 舵机控制板原理介绍由上述机械结构介绍可知,本六脚机器人是通过控制18个舵机来实现机器人的运动的。但如何协调好各舵机的动作,让其满足功能需求?这就需要用到舵机控制板。舵机控制板按控制舵机数目(接口数)的多少,可分为8路舵机控制器,16路舵机控制器,32路舵机控制器等等。考虑到成本以及控制舵机的数量,本课题采用两块16路舵机控制器串联的方式来控制舵机。选用型号为PARALLAX公司提供的Propeller Servo Controller USB(#28830,简称PSCU)。如图3.2所示:图3.2 舵机控制板PSCU具有下述多项特点:可串联两块控制板实现32路舵机控制; 独立的螺旋式接线柱为控制板供电,舵机则可通过开关控制关停; 其所用固件开放源代码; 可通过USB接口或者串行通信接口编程; 舵机速度可控。 PSCU规格及性能: 电源要求:逻辑电平5VDC60mA,4.87.5VDC控制舵机; 通信:异步串行通信2400bps或者38.4kbps(TTL或USB); 工作温度:32158°F(070°C); 尺寸:2.26x1.80x0.65in(57.3x45.7x16.5mm);3.3如何使用舵机控制板在使用控制板前,需通过螺旋式接线柱给控制板提供4.87.5V的直流电,同时为使舵机运动,还需给舵机提供5V的直流电。此项可通过USB接口(如图3.3)或者通过舵机控制板左上方的Serial In 处的杜邦针供电(TTL电平,如图3.4)。图3.3 PSCU-USB供电电路连接图图3.4 PSCU-主控制板供电电路连接图USB调试:安装FTDI VCP驱动(下载地址:安装PSCI软件(访问网址,并搜索28823)。双击软件图标,即可获得图3.5所示,连接好USB线,在界面上选择COM口,获取PSC版本,即可使用。图3.5 PSCI控制界面图中每个channel的进度条,可发现对应舵机会向相应方向发生一定度数的旋转。这可用来进行舵机控制调试,从而获取舵机位置值,来书写步态。注意:图中数据在编入ARM程序中时,应先除以2倍,才是实际数据,即图中的中心出1500对应实际的750。更多功能可参照PARALLAX公司提供的Propeller Servo Controller USB说明文档。当使用双块板时,其连接方式为:首先将主板的Serial In(两排,选上排)引出按高低电平信号线要求插在主控制板(STM32板)上,其中红色线接5V电源,黑色线接地,白色线接信号线,即PA9。然后将副板的Serial In(上排)引出插在主板的Serial In处(下排)。最后通上电源即可。了解了PSCI的基本功能,并按要求连接好电路后,首要做的就是将舵机位置的初始值找出。通过拖动进度条,并观察机器人各腿的位置,从而确定舵机初值。笔者提供的舵机初始值均为六脚与身体垂直时的值,且2、3关节夹角近似为90°。3.4 控制板程序编写 基本工作准备与注意事项:前述工作准备停当,即可开始程序的编写。PARALLAX公司提供的说明文档中提供了BS2程序,需要通过C语言转译,才可供ARM板识别。首先注意的是PSCU板的默认波特率为2400bps,所以在编写串行通信程序时,应将串行通信的波特率设置为2400bps(具体见4.4节关于USART设置的介绍)。当然本控制板亦可通过程序设置,将波特率改为38.4kbps,具体内容下面会介绍到。此外,控制板接收的异步通信数据格式要求还有,正相,8个数据位,无奇偶校验位,1个或2个停止位。其次控制板分为主副板,则对应的舵机控制通道号即为031;即副板的通道号再原号基础上加16即可。如果按序连接舵机,可使编程变得较为简单,通过简单的数学关系进行数据处理,但线路凌乱,看起来不是很美观;本课题采用的是对称连线,即选用通道号08,2331;当然,这样编程相对就复杂一些。最后关于主副板的界定还需提醒一句,由于硬件可能出现bug,实际上控制板可能通道号等没有按照说明书的来,在调试过程中,可多试几次,按照实际结果编程。本课题在调试过程中即出现了问题,实际的主副板是颠倒的,且必须将副板与主控制板(STM32)连接才可使用。通信协议规则:PSCU为用户提供了多种控制功能,但每种控制字符串均是以!SC开始,以0x0D结束,中间有间隔4个主控制字符,下面将一一介绍:位置命令设置舵机的位置控制字符串为:“!SC” <channel> <ramp speed> <lowbyte> <highbyte> <CR>其中channel为通道号,即前述的031;ramp speed为一字节值,用于舵机转速控制,其变化范围为063,且数值越大,转速越小;lowbyte为舵机位置的低字节,highbyte为舵机位置的高字节。通过改变lowbyte与highbyte值即可改变舵机位置,其值变化范围为2501250。位置命令控制板最基本的命令,往往也是唯一用到的功能。通过此命令,可以实现舵机按要求的转动,从而满足行走等多功能要求。SBR设置波特率控制字符串为:“!SCSBR” <mode> <CR>其中mode是用来设置波特率的,0代表2400bps,1代表38.4kbps。控制板的默认波特率为2400bps,无需设置,但如果需要使用38.4bps的波特率进行通信时,可使用该程序对波特率进行更改。RSP返回位置值控制字符串为:“!SCRSP” <channel> <CR>其中channel为通道号。与VER?一样,需要进行输入输出的设置,方能返回位置值,这对编程很有用处,可以通过读取位置值,判断其是否到位来实现延迟,精确性较高。本课题未使用。读者可拓展功能。PSS设置软件口控制字符串为: “!SCPSS” <mode> <CR>其中mode为0代表015;1代表1631。可能由于板子的问题,实际过程中并未起作用,当控制板没问题时,可以根据个人喜好设置控制板的端口号,为编程提供便利。PSD使端口无效控制字符串为: “!SCPSD” <channel> <CR>其中channel为通道号。此功能与PSE功能配合使用,在适当时候可能才生意想不到的效果。PSE使端口恢复有效控制字符串为: “!SCPSE” <channel> <CR>其中channel为通道号。此功能用于PSD后,用来恢复端口的正常使用。其余的功能控制命令此处便不再赘述,因为一般情况下无法用到。C语言程序编写简介:由于说明书中只提供了BS2程序,较难普及,需使用应用较广的C语言编写。从控制命令的格式可以看出,无论哪种方式,都是8字节的字符串,于是,可定义一个联合体(结构体亦可),来储存这一串字节:typedef union _SERVO_PACKET char stream8; struct char CR : 8; char B3 : 8; char B2 : 8; char B1 : 8; char B0 : 8; unsigned SC : 24; packet; SERVO_PACKET; SERVO_PACKET pac;并将三字节的SC初始化为0x215343或”!SC”,将CR初始化为0x0D。这样在编写各种控制命令函数时,只要改变B0B3的值即可。例,位置命令函数:void SendPacket(char RS, char Channel, int Position) int i = 0; pac.packet.B0 = Channel; pac.packet.B1 = RS; pac.packet.B2 = LOWBYTE(Position); pac.packet.B3 = HIGHBYTE(Position); for(i = 7 ; i >= 0 ; i-) ser_putbyte(pac.streami); /该函数4.4节介绍,作用为发送单个字节 其中LOWBYTE()、HIGHBYTE()函数的定义为:#define LOWBYTE(v) (unsigned char) (v) #define HIGHBYTE(v) (unsigned char) (unsigned int) (v) >> 8)其功能为获取数值(位置值)的低八位与高八位。这即可为编程提供很大方便。以此类推,其它命令的函数可以根据需要只要参考上述的位置命令函数编写即可。在此基础上以及之前用PSCI软件调试出的舵机初始值,即可编写舵机初始化程序了。void Initservo(void) int i=0; for(i=0;i<18;i+) SendPacket(15,channelnoi,initposii); delay_ms(100); 其中,15为舵机转速,channelno18数组储存舵机号,initposi18数组储存相应舵机的初始位置值。4 STM32开发板介绍与程序编写本章主要介绍STM32开发板的使用,以及各种应用程序的编写说明。4.1 STM32F107芯片简介STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。在STM32F103、STM32F105的基础上,意法半导体公司又推出了一款性能较强的全新STM32互连型(Connectivity)系列微控制器中产品STM32F107。该芯片集成了各种高性能工业标准接口,且STM32不同型号产品在引脚和软件上具有完美的兼容性,可以轻松适应更多的应用。 基于STM32F107的强大功能,以及数量众多的I/O口,本课题选用STM32F107VC芯片作为总控制芯片。4.2 软件与编程初始准备 在使用开始学习使用STM32开发板前,需要安装两个软件:RealViwe MDK(Keil Vision4)用于编程,在注册是注意Target应选择ARM;JLINK仿真器驱动器,下载地址为: 安装好软件后,先新建一个程序文件夹,将Libraries与obj文件夹拷贝进去,如果用到触屏,还需包含Source文件夹(具体使用时,可拷贝现成程序文件夹,修改主程序即可),打开Keil4,新建一个工程,即可开始编程,注意每写一个H文件,都需要将#include“stm32f10x.h”置入文件的首部。4.3 GPIO与AFIO设置与应用 4.31 GPIO设置与应用 STM32F10x处理器上共有7个I/O端口:A、B、C、D、E、F、G,每个端口有16个引脚。每个GPIO端口都对应2个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),2个32位数据寄存器(GPIOx_IDR,GPIOx_ODR)、1个32位置位/复位寄存器(GPIOx_BSRR)、1个16位复位寄存器(GPIOx_BRR)和1个32位锁定寄存器(GPIOx_LCKR)。 I/O口设置包括端口号设置,传输方式设置,输出速度设置。 这三种设置是相互关联的,有些I/O口只能用作输入口,有些只能用作输出口,这是由于在实际的电路中,有些I/O口采取了固化措施,设定了特定功能,例如PE的所有I/O口都被用于触摸屏,不能额外分配;PA0口作为输入口时,正常时为高电平,发生中断时为低电平。传输模式包括:浮空输入、输入上拉、输入下拉、模拟输入、开漏输入、推挽式输出、推挽式复用功能、开漏式复用功能等模式。不同的输入输出模式可能会产生不同的结果。开漏输出,输出端相当于三极管的集电极,要得到高电平需上拉电阻,适合于做电流型的驱动;推挽输出可以输出高低电平,连接数字器件。但在本应用中,均连接数字器件,故只需将输入模式设置为浮空输入,输出模式设置为推挽输出即可。当为输出模式时,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而非输出信号的速度,后者与程序有关(芯片内部在I/O口的输出部分安排了多个不同响应速度的输出驱动电路,用户可以根据需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。以USART1的I/O口配置为例:void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; /usart1 发送GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /推挽输出GPIO_Init(GPIOA,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; /usart1 接收GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /浮空输入GPIO_Init(GPIOA,&GPIO_InitStructure); 其中PA9配置为推挽输出模式,PA10则配置为浮空输入模式。其它的I/O口配置方式与上述一样。具体采用什么I/O口,下面会一一介绍。因为程序需求,往往一个I/O口即要被配置成输入口,同时也要转换成输出口,遇到这种情况,如果像上述一样编程,势必会使程序显得繁杂,此时可采用写寄存器的方式来更换I/O口的传输模式。具体写法如下:#define DAT_OUT GPIOD->CRL=(GPIOD->CRL&(0x0000000F<<04)|0x00000003<<04#define DAT_IN GPIOD->CRL=(GPIOD->CRL&(0x0000000F<<04)|0x00000004<<04其中第一行将PD1设置为推挽输出模式,第二行将PD1设置为浮空输入模式。在使用时,只需在程序前,加入一行DAT_OUT;或者DAT_IN来切换PD1输入输出。当书写其它I/O口的程序时,只需将GPIOD换成相应I/O口,如果端口号为07,则只需将<<右边的04改成端口号*4的积,例如PA0则为00,如果端口号为815,则需将CRL换成CRH,同时<<右边的04改成(端口号-8)*4,例如PB13则为20。在程序中配置I/O口之前,还需对I/O口进行初始化,即开启系统时钟,例如,使能PA口:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE)/使能APB2总线外设时钟。这样就可以配置完整I/O口了。当学会配置好I/O口后,根据开发板中LED灯得I/O口(如图4.1),即可书写一个简单的控制LED等闪烁的程序。图4.1 LED灯电路图程序为: void ledflash(void) GPIO_SetBits(GPIOD,GPIO_Pin_2); /LED1 delay_ms(1000); GPIO_ResetBits(GPIOD,GPIO_Pin_2); delay_ms(1000); GPIO_SetBits(GPIOD,GPIO_Pin_3); /LED2 delay_ms(1000); GPIO_ResetBits(GPIOD,GPIO_Pin_3); delay_ms(1000); GPIO_SetBits(GPIOD,GPIO_Pin_4); /LED3 delay_ms(1000); GPIO_ResetBits(GPIOD,GPIO_Pin_4); delay_ms(1000); GPIO_SetBits(GPIOD,GPIO_Pin_7); /LED4 delay_ms(1000); GPIO_ResetBits(GPIOD,GPIO_Pin_7); delay_ms(1000); 此程序的功能是,使LED灯依次闪烁。4.32 AFIO-I/O口重映射 为了使不同器件封装的外设I/O口功能数量达到最优,可以把一些复用功能重新映射到其他一些脚上(可参照4.4节表4.1)。可通过软件编程来实现。当使用了重映射功能后,原始引脚便不再具备原先设定的功能。以USART1为例,原先输出口为PA9,经重映射后,输出口则改为PB6,而PA9则可作为其它外设的输入输出口使用。具体使用方法为:首先,开启AFIO时钟,如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);然后,在I/O口配置之前,使能复用:GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);最后,按规定配置I/O口。由于本项目使用的STM32功能较简单,所以并未用到重映射功能,但却要开启AFIO时钟,具体原因在4.5节讲中断时会提到。4.4USART设置与应用 USART 即STM32F10x处理器的通用同步异步收发器单元。每个STM32板提供25个独立的异步串行通信接口,可工作于中断和DMA模式两种模式。USART单元支持同步单工、双工通信和半双工单线通信,也支持LIN(Local Interconnection Network)、智能卡协议和IrDA(红外)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作,并允许多处理器通信。USART的配置很简单,用起来也较方便。以配置查询方式的USART1为例,如下:void USART1_Configuration(void) USART_InitTypeDef USART_InitStructure; /串口设置恢复默认参数USART_ClockInitTypeDef USART_ClockInitStructure; /初始化参数设置 USART_InitStructure.USART_BaudRate = 2400; /波特率2400 USART_InitStructure.USART_WordLength = USART_WordLength_8b; /字长8位 USART_InitStructure.USART_StopBits = USART_StopBits_1; /1位停止字节 USART_InitStructure.USART_Parity = USART_Parity_No; /无奇偶校验

    注意事项

    本文(六脚爬虫机器人的机械结构以及控制程序的编写 自动化专业毕业设计 毕业论文.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开