ZigBee无线传感网技术与应用 课件 项目一任务三 调试点亮智能LED灯_第1页
ZigBee无线传感网技术与应用 课件 项目一任务三 调试点亮智能LED灯_第2页
ZigBee无线传感网技术与应用 课件 项目一任务三 调试点亮智能LED灯_第3页
ZigBee无线传感网技术与应用 课件 项目一任务三 调试点亮智能LED灯_第4页
ZigBee无线传感网技术与应用 课件 项目一任务三 调试点亮智能LED灯_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

Zigbee无线传感网技术与应用城市交通照明灯系统01学习目标01了解城市交通照明灯系统应用03了解什么是无线传感网05掌握SmartRF工具安装与使用06掌握如何建立一个简单的ZigBee工程方法04掌握ZigBeeIAR开发环境安装与基本使用02了解什么是ZigBee任务三:调试点亮智能LED灯要求读者掌握在IAR编写平台,使用调试工具栏调试程序,包含编译程序、断点调试、并最后生成HEX文件,下载至ZigBee开发板中。任务要求任务目标01了解程序执行过程了解调试程序的重要性了解编写程序规范了解什么是HEX文件了解程序运行基本原理02030405在计算机语言中我们必须逐行定义每一个动作,这样计算机才能执行动作,因为计算机只能一步步执行我们定义的动作,如我们制作可乐鸡翅-1将鸡翅洗净,2将鸡翅过油,3捞起放入姜、蒜,4放入鸡翅、盐、生抽、汤、可乐中火慢煮20分钟。计算机程序就如同这样的一个过程,需要有1,2,3,4执行的过程。计算机没有那么聪明我们必须将所有需要执行的每一个小动作都明白地告诉它,这些的动作就是我们的代码。1.可乐鸡翅储备知识什么是软件调试?我们从英文的原词softwaredebug说起。debug是在bug一词前面加上词头de,意思是分离和去除bug。2.虫子产生-Bug1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上(见图),写道:就是这个bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。美国的艾肯博士研制出了马克2号计算机,在研制过程中,诞生了一个新词“debug”来表示排除计算机故障,他的出现是这样的:在盛夏的时候,美国水上研究中心使用马克-Ⅱ计算机进行数据处理时,经常停止工作。储备知识Bug名词的由来其原因是,由于天气炎热加上机房无空调设备,致使大量飞蛾在机房中乱飞,这些飞蛾飞到正要闭合的继电器触点之间被继电器触电夹住,导致电路中断,造成工作故障。只需要将飞蛾找出拿掉,就可以正常工作,因为飞蛾的英文是bug,所以工作人员创出了debug表示排除计算机故障。2.虫子产生-Bug储备知识什么是软件调试图:飞娥的Bug简单来说,软件是程序和文档的集合,程序的核心内容便是按一定顺序排列的一系列指令。如果把每个指令看作一块积木,那么软件开发就是使用这些积木修建一个让CPU(中央处理器)在其中运行的交通系统。这个系统中有很多条不同特征的道路(函数)。储备知识如果说软件的执行过程就像是CPU在无数条道路(指令流)间飞奔,那么开发软件的过程就是设计和构建这个交通网络的过程。其基本目标是要让CPU在这个网络中奔跑时可以完成需求中所定义的功能。对这个网络的其他要求通常还有可靠、灵活、健壮和易于维护,开发者通过简单的改造就能让其他类型的车辆(CPU)在上面行驶……开发一个满足以上要求的软件系统不是一件简单的事。2.虫子产生-Bug测试编码设计分析通过测试并发布后,还需要维护和支持工作。在以上环节中,每一步都可能遇到这样那样的技术难题。储备知识在软件世界中,螺丝刀、万用表等传统的探测工具和修理工具都不再适用了,取而代之的是以调试器为核心的各种软件调试工具。软件调试的基本手段有断点、单步执行、栈回溯等,其初衷就是跟踪和记录CPU执行软件的过程,把动态的瞬间“凝固”下来,以供检查和分析。对于初学者无需学习更高的调试技巧,仅需要掌握最基本的断点、单步执行即可。2.虫子产生-Bug螺丝刀万用表各类软件调试工具3.调试工程环境准备本任务所需软件已安装至电脑可直接使用,所需工程保存在“配套资料\任务三\”目录中。本任务所需硬件:下载器*1、ZigBee开发板*1、5V电源适配器*1、USB下载线。任务实施3.调试工程任务实施编译代码本案例重点学习如何查找代码存在的错误并加以调试,故在案例工程中加入了许多初学者在编辑代码过程中经常错误的问题。步骤1:运行已有工程,找到并运行任务三新建工程文件后缀名为“.eww”的工程文件。图:运行已有工程文件3.调试工程任务实施步骤2:尝试编译工程代码,点击菜单栏->Project工程->Compile编译。图:编译项目3.调试工程任务实施步骤3:当工程文件存在问题时,位于软件下方的Build栏,将弹出错误提示,同时软件的文本编辑区也将提示最近一行代码的错误。图1:Build错误提示3.调试工程任务实施图2:文本编辑区错误提示3.调试工程任务实施步骤4:根据提示debug,错误提示为“cannotopensourcefileiocc52530.h”错误,将其进行翻译表示“为能打开资源文件iocc52530.h”,想想如文件存在为什么无法打开,只能有一个问题那就是输入错误,经观察发现“iocc52530.h”多出一个5,少了c,我们将多出的5删除,补充字母c,再重新编译。再次查看Build区与文本编辑区的提示。图1:Build错误提示3.调试工程任务实施图2:文本编辑区错误提示3.调试工程任务实施步骤5:根据步骤五技巧查看,Build错误提示区提示为“identifier“P1D1R”isundefined”错误,将其进行翻译表示“未能找到P1D1R的定义”,分析错误表示编译器未能再工程内找到对应的定义,P1DIR为iocc2530.h头文件中存在定义的特殊功能寄存器,根据经验,一般情况下如编程人员在肉眼观察下无法辨识代码是否出错则重新输入本行代码,重新输入P1DIR=0xff,重新编译。图:错误提示3.调试工程任务实施步骤6:由上图所示,我们已经将错误排除,本错误在于P1DIR中字母“I”与数字“1”极为相似所引起的文件,故需要读者特别注意输入字母问题,如发现类似的问题无法辨识则重新输入一次。下面我们继续排查错误,由上图可知错误“expecteda“;”,如提示中有‘;’的提示则说明在位于错误的上一行代码存在少了封号的问题,补充P1DIR=0xff;封号即可,重新编译。图:错误提示3.调试工程任务实施步骤7:如上图所示“unrecongnizedtoken”根据提示,翻译表示“无法识别令牌”该提示无针对性,如发现该错误可暂不分析错误,直接查看下一条错误,下一条错误表示“expecteda“)””,如发现本错误提示则重点在提示的符号上,发现提示的符号为括号问题“)”,经观看可发现本行代码的括号比其他行的代码都来的大,在实际代码编辑的过程中,初学者时常将中文括号加入其中,中文符号在代码编译过程中是无法正在编译的,将其改为英文括号,继续编译。图:错误提示3.调试工程任务实施步骤8:如上图所示,英文表示0个错误,0个警告,表示我们已经将程序存在的代码错误已经修复成功,现总结初学者在编辑过程中常见的几处编辑代码过程中存在问题与错误原因。图:常见错误提示与错误原因错误提示样例解决方法cannotopensourcefileiocc52530.h#include"ioc52530.h"找不到头文件,头文件名称输入错误identifier“P1D1R”isundefined1D1R=0xff字母I与数字1类似expecteda“;”P1DIR=0xff缺少封号unrecongnizedtoken“expecteda“)”while(1)中文输入法问题3.调试工程任务实施单步调试法经过上述编译调试,我们将代码修复成功,现我们将代码在仿真器中运行,发现程序无任何效果,灯未被正常点亮(先排除硬件问题),此时对于初学者如通过观看代码来排除错误将十分困难,故我们需要使用软件调试技巧来调试软件,使我们事半功倍。步骤1:点击运行按钮运行程序,不要点击全速执行按钮,发现程序会发现指针指向程序最开始的位置。(图中的绿色箭头为程序指针,指向哪则表示程序执行到哪)。图:程序指针3.调试工程任务实施步骤2:点击,调试工具栏箭头向下“单步调试”按钮。图:单步按钮3.调试工程任务实施步骤3:点击后,发现程序指针指向下一行,表示我们程序执行过“P1DIR=0xff”这行。图:单步调试3.调试工程任务实施步骤4:为了更好得观察P1DIR是否被正常赋值为0xff的数值,我们也可打开Watch观察窗体查看当前P1DIR具体的数值。过程为鼠标右键选中P1DIR->选择AddWatch->在窗体右方将弹出观察窗体。图1:观察变量图2:观察窗体3.调试工程任务实施步骤5:在观察窗体中可查看当前变量的具体数值,其中Value表示数值,Location为变量的地址,Type为变量的类型,当前变量的数值为'与我们的预计的结果不同,那是因为软件中表示为字符方式,我们需要将其修改为hex显示(十六进制显示),步骤为->鼠标右击选中变量P1DIR->选择HexadecimalFormat。发现数值已正常显示为0xff。图1:切换显示模式图2:显示数值3.调试工程任务实施步骤6:在观察窗体观察变量赋值情况可见,我们的第一行代码被正确执行与我们要的结果相同,我们继续使用单步按钮查看下一条代码的结果,程序执行到P1=0x00,继续执行这条代码发现灯全部熄灭了,分析可知代码P1=0x00正是控制灯亮灭的代码,在电路中0表示灭1表示亮,找到问题代码,于是我们点击“停止”按钮终止调试。图:终止按钮3.调试工程任务实施步骤7:将代码修改成P1=0xff(二进制11111111)表示全亮LED灯,点击下载运行程序按钮。这次我们直接全速执行按钮可见灯全亮了。总结:在软件调试过程中单步调试是验证代码是否按照程序员正常执行最为有效的一种方式,故需要读者多加练习掌握。断点调试法在读者掌握单步调试的基础上,在代码比较多的情况下使用单步调试将十分耗时并没有效率,读者则可以使用断点调试法调试程序,其原理就是全速执行在断点之前的全部代码,在打断点的地方停止执行,从而让读者观察代码的执行过程是否符合要求。具体步骤如下:3.调试工程任务实施步骤1:点击运行按钮运行程序,不要点击全速执行按钮,在需要设置断点的代码处->鼠标左键点击->将出现红色的点表示断点。图:断点调试3.调试工程任务实施步骤2:此时我们点击“全速”按钮,发现程序指针,跳到了我们设置的断点的位置表示程序已经全速执行了上述的代码,停在了我们需要观察代码的位置方便读者观察是否符合要求。图:断点处步骤3:此时读者即可使用单步调试法观察程序是否正常运行。总结:断点调试法配合单步调试法可方便开发者能快速的查看到问题所在代码,十分方便,是调试软件人员必不可少的技能。在今后的学习中将大量用到该方法,需要读者重点掌握。4.生成输出HEX文件任务实施在开发人员开发代码完成后,会遇到类似的场景,设备需要大量的下载工作可能是上万个设备,此时需要将程序给大量下载工作人员完成工作,但开发人员又不能将源代码给工作人员,此时就需要将代码生成为hex文件给工作人员下载使用,也就是说hex文件生成也是代码加密的一种过程。图:Option选项步骤1:开发option选择,鼠标右键工程->选择Option选项。3.生成输出HEX文件任务实施图:生成HEX文件配置步骤2:在弹出的Option窗体中选择Linker->OutPut->勾选Overridedefault->修改文件后缀为hex->选择Other->OK保存。4.生

温馨提示

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

评论

0/150

提交评论