飞思卡尔HC(S)08系列单片机开发及C语言编程简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

FSL08系列单片机开发及C语言编程简介张明峰2007年10月于上海1.CodeWarrior中建立新项目运行CodeWarrior(CW)集成开发平台,如图1-1所示在File菜单下点击New,弹出建立新项目的模板对话框,见图1-2。一般的简便做法是在图1-2对话框左面的选择列表中选择“HC(S)08NewProjectWizard”,然后在右面的项目名“ProjectName”输入条中,输入你要建立的新项目名字,再在“Location”一栏中用确定项目存放的文件夹路经,完成后按“OK”进入下一步。你也可以在图1-2对话框左侧列表中选择“EmptyProject”,这样生成的项目不包含任何文件,你必须在CodeWarrior中自己添加所有相关的文件内容。我想除非有特殊理由,实际项目开发过程中很少采用这种麻烦的方式来建立自己的项目。接下去是选择项目开发所用的编程语言,见图1-3。最常用的当然是C语言编程。有时因具体项目要求,除了C编程外还需要编写独立的汇编语言模块,那就再加选汇编工具(Assembly)。C++编程在免费版和标准版CW下都不支持,只有在专业版下才可以使用。编程语言选择完毕后按“Next”。图1-1图1-2图1-3pdfMachinebyBroadgunSoftware-agreatPDFwriter!-agreatPDFcreator!-系列单片机开发及C语言编程简介张明峰2007年10月于上海这时将出现如图1-4的对话框,让你选择项目开发对应的MCU型号。在CW5.x版本下支持几乎所有的HC08和大部分HCS08单片机型号。在最新的CW6.x中,增加了飞思卡尔最低端的8位机(RS08系列)和低端32位处理器(ColdfireV1系列)的支持,但HC08系列的有些型号没有被包含在内。由于HC08为比较老的产品系列,已经不推荐在新项目设计中选用,因此影响不会太大。对于新用户来说,请尽量直接安装CW6.x或以后推出的更新版本。以典型的9S08系列为例,当你选择了一个MCU型号后,在图1-4右侧会显示出所有针对该型号芯片可用的项目调试场景。其中:“FullChipSimulator”是芯片全功能模拟仿真,即无需任何目标系统的硬件资源,直接在你的PC机上模拟运行单片机的程序,在模拟运行过程中可以观察调试程序的各项控制和运行流程,分析代码运行的时间,观察各种变量,等等。CW提供了功能强大的模拟激励功能,可以在模拟运行时模拟一些外部事件的输入,配合程序调试;“P&EMultilink/CyclonePro”是基于P&E公司的硬件调试工具实现实时在线硬件调试。实际就是我们经常说的BDM调试。BDM调试是基于芯片本身内含的在线调试功能,可实现程序下载,单步/全速运行,可以设若干个断点,可以观察和修改任意寄存器或RAM内存空间。BDM几乎是开发飞思卡尔8位(9S08和RS08系列)、16位(9S12系列)和32位(ColdfireV1系列)单片机的标准调试模式,运用最为广泛;“SofTecHCS08”是另外一家SofTec公司提供的硬件调试工具,国内使用较少;“HCS08SerialMonitor”是基于芯片串口的监控调试开发模式。由于开发效率较低,现在几乎无人使用。注意不同系列,不同型号的芯片,或不同版本的CW,其所对应或支持的开发场景可能不同,在图1-4的项目建立模板中都可以显现出来。用户点击选择某一项场景后,该场景将在项目建立完成后作为首选配置。你可以在稍后调试过程中随意切换开发场景,不必太在意在这里的选择。到此你如果按“Finish”,整个项目建立过程将完成,剩下的一些项目设定将自动用缺省配置。如果你要自己选择调整,则按“Next”进入下一步,往项目中添加现成的文件,见图1-5。图1-4FSL08系列单片机开发及C语言编程简介张明峰2007年10月于上海如果你以前编写了很多代码文件现在想重复利用,那么可以通过图1-5对话框左面的文件树选择对应的文件,按中间的“Add”逐个添加到右侧的“ProjectFiles”列表中。若加错了就用“Remove”把列表中的文件移除。注意此列表下方的两个选项:“Copyfilestoproject”选择是否将所选的文件拷贝到现在的项目文件夹中。如果你准备在新的项目中修改这些文件,就选择拷贝,以免把原始的文件改变后而影响先前的一些项目;“Createmain.c/main.asmfile”选择是否在本项目中生成全新的main.c或main.asm文件,一般的项目开发都需要生成新的main文件。按用户自己的要求和目的自由选取。建议大家保留默认的选择状态。如果没有什么现成的文件需要加入,就直接按“Next”进入下一步,选择处理器专家(ProcessorExpert或简称PE)。PE是CW集成开发平台内带的可实现芯片内部各种资源模块配置并自动生成相关代码的一个软件工具。不过只有专业版的CW才支持该功能。通过PE,用户可以快速实现芯片初始化代码的自动生成工作,而且PE还提供了大量的软件库可供用户开发时嵌入或调用。因为8位单片机结构和功能相对简单,实现的控制项目复杂度也不是很高,故一般情况下8位机开发我们都不需要PE的介入,自己直接编写程序代码即可。关于PE的详细介绍将耗费大量的文字,这里按下不提。所以在图1-6的对话框中选择“None”,并直接按“Next”进入下一步。这是项目建立模板的最后一步。在这一步你可以决定有关C/C++的一些编译和代码生成模式,见图1-7。启动代码选择。所有C编译器会自动生成一些启动代码。单片机复位后的指令运行将首先执行这些启动代码,然后再进入到你自己的程序模块main函数。这些启动代码主要完成堆栈指针初始化、全局和静态变量自动清零图1-5图1-6图1-7FSL08系列单片机开发及C语言编程简介张明峰2007年10月于上海或赋初值、调用main函数等。ANSI标准初始化“ANSIstartupcode”即完成上述工作,是项目开发的标准选择;最小初始化“Minimalstartupcode”除了初始化堆栈指针外就直接调用main函数,代码最少,进入main函数最快,但变量的清零和赋初值必须由用户自己编写代码实现。在这里请大家特别注意,即最小初始化将不会对全局或静态变量自动清零,这一点在单片机编程中有时非常重要。在实际产品中当单片机出现异常复位程序重新开始运行时,我们往往希望原先的控制过程得以延续,因此一些关键变量的内容要在复位后保留而不能不分青红皂白地一概清零。选择最小初始化代码可以实现这一特殊要求,但还有更合理更高级的方法,将在后面介绍prm文件时详细说明。编译内存模式选择。“Tiny”模式是指所有程序不超过64KB,RAM变量不超过内存地址最前面的256字节(有时也被称作第0页);“Small”模式程序空间一样不超过64KB,但RAM不限于第0页,可以覆盖整个64K地址空间。如果你选择的芯片有超过第0页空间的RAM并想在设计中充分利用,就应该选择该缺省的“Small”模式。浮点运算库选择。当你的程序设计决定用浮点运算时就应该选择加入浮点运算库。浮点运算库有两种:一是标准浮点float和双精度浮点double都用32位精度表示,换句话说float和double都看成是float。这样做的目的是减少代码量,提高运算速度;另一种是double用64位精度表示,毋庸置疑其运算精度将增加,但代码量也将增加,运算时间也会更长。用户可以按实际计算需求酌情选取。如果设计中无需浮点运算,就选择“None”。全部选择完成并确认后,按“Finish”,恭喜你:你的项目已经成功建立,可以开始编写你自己的代码,调试你的目标系统了。完成后的项目范例如图1-8,其中:Sources栏目下包含所有你的原程序文件,可以是C,也可以是asm,或C++。你可以在此栏下点击鼠标右键在弹出菜单中选择“AddFiles”添加其他源程序文件;Includes栏目下包含本项目所有被引用的头文件。你可以自己编写项目相关的头文件并添加到本栏目下;Libs栏目所包含的是本项目开发用到的代码库,可以是目标代码型式或C源程序型式;ProjectSetting下放的全是项目的配置文件。StartupCode下是刚才建项目时自动生成的启动文件,你可以打开观察具体的程序代码,也可以在必要时自己添加或修改这些启动代码;LinkFiles下的三个文件分别是:用于编程器下载的代码文件格式配置(bbl文件)、机器代码连接定位用的内存说明和配置文件图1-8FSL08系列单片机开发及C语言编程简介张明峰2007年10月于上海(prm文件)、生成的目标代码在内存中的映射文件(map文件)。其中prm文件最为关键,将在稍后重点专门介绍。2.CodeWarrior中项目的基本管理和设定现在项目已经成功建立,应该可以开始编写自己的代码了。但在写代码之前,先了解一下CW中最基本的项目管理和设定的方法还是很有必要。在图1-8中项目窗口的右上角有一些小图标,这些图标代表了项目开发管理的最基本功能:该图标可以即时改变目标单片机型号和开发调试场景。按下这一图标,将弹出图1-4所示的对话框,可以按照前面针对新项目建立模板的介绍,改变目标单片机的型号,或设定不同的当前目标开发调试场景。对于调试场景的改变,也可以直接点击当前场景右边的下拉菜单按纽,直接用鼠标点击选择所需的新场景,如图2-1;该图标完成项目配置选项设定。点击该图标会弹出一个对话框,里面所含的内容非常繁杂,这里只解释几个日常使用时最常用的选项配置:1.最终目标代码类型设定(TargetSetting)。在这里你可以选择最终编译连接生成的代码直接用于单片机程序运行(LinkforHC08),或将各个源代码文件编译连接生成一个库文件(LibmakerforHC08)。这些选择可以通过图2-2所示的下拉菜单选择;图2-1图2-2图2-3FSL08系列单片机开发及C语言编程简介张明峰2007年10月于上海2.C编译选项设定(ComplierforHC08),对话框内容如图2-3。在这里你可以完成针对C编译器的所有配置设定。几个选项按纽解释如下:选择配置编译时产生的各种信息,其中包括普通一般信息(Information)、告警信息(Warning)、错误信息(Error)和致命信息(Fatal)。出现一般或告警信息时编译能顺利完成,所以你可以有选择地将某些你不希望太关注的信息屏蔽掉(Disable);但如果有任何错误或致命信息出现,当前源程序的编译将立即终止,你必须按给出的信息提示解决这些错误,然后才能继续编译。完成编译过程中代码生成的各类选项设定,所含内容也很多,最需要关注的是优化栏“Optimization”。你可以按实际需要打开或关闭某些特定的优化选项,但我们一般通过下面介绍的“SmartSliders”做综合的优化设定。显示编译器当前设定的各类变量的长度和符号特性(针对字符和枚举型变量),无特殊原因一般都不用对这些变量长度做任何修改。按常规,在满足功能要求的前提下,变量长度尽可能短,字符型变量尽量选择无符号型,以便提高代码编译效率和程序运行速度。可以非常方便地实现代码优化时的综合考虑。你可以用上面介绍的“Option”对话框可以设定特定的优化选项,但用此“SmartSliders”对话框则可以针对不同的优化侧重面由系统自动配置具体的优化选项。具体的对话框见图2-4,你只需用鼠标拉动各项的滑块对其进行优化级别的设定:“CodeDensity”针对生成代码的长度进行优化,设定越高,生成的代码长度越短,代码越高效紧凑;“ExecutionSpeed”针对代码运行速度进行优化,设定越高,代码执行速度越快;“DebugComplexity”针对调试复杂度进行优化,设定越高,生成的的调试信息越丰富,调试越方便;“CompilationTime”针对编译时间进行优化,设定越高

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功