您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > ARM Cortex M4嵌入式系统开发实践3
43第3章第一个样例程序及工程组织本章阐述“入门”过程的(5)—(8)步,通过这个过程,完成第一个CodeWarrior工程、IAR工程的入门。利用GPIO模块编程控制发光二极管作为入门例子,给出CodeWarrior、IAR工程组织、框架,阐述各个文件的功能,主要目的是使读者理解程序框架和工作过程。重点是透彻理解第一工程的执行过程。3.1通用I/O接口基本概念及连接方法1.I/O接口的概念I/O接口,即输入输出接口,是微控制器同外界进行交互的重要通道。这里的接口英文是port,也可以翻译为“端口”,另一个英文单词是interface,也翻译为接口。从中文字面看,接口与端口似乎有点区别,但在嵌入式系统中它们的含义是相同的。有时I/O引脚称为接口(interface),而把用于对I/O引脚进行编程的寄存器称为端口(port),实际上它们是紧密相连的。因此,不必深究它们之间的区别。有些书中甚至直接称I/O接口(端口)为I/O口。在嵌入式系统中,接口千变万化,种类繁多,有显而易见的人机交互接口,如操纵杆、键盘、显示器;也有无人介入的接口,如网络接口、机器设备接口。2.通用I/O所谓通用I/O,也记为GPIO(GeneralPurposeI/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式。本书中使用正逻辑,电源(Vcc)代表高电平,对应数字信号“1”;地(GND)代表低电平,对应数字信号“0”。作为通用输入引脚,MCU内部程序可以通过端口寄存器读取该引脚,知道该引脚是“1”(高电平)或“0”(低电平),即开关量输入。作为通用输出引脚,MCU内部程序通过端口寄存器向该引脚输出“1”(高电平)或“0”(低电平),即开关量输出。大多数通用I/O引脚可以通过编程来设定工作方式为输入或输出,称之为双向通用I/O。3.上拉下拉电阻与输入引脚的基本接法芯片输入引脚的外部有三种不同的连接方式:带上拉电阻的连接、带下拉电阻的连接和“悬空”连接。通俗地说,若MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。这种做法使得,悬空的芯片引脚被上拉电阻或下拉电阻初始化为高电平或低电平。根据实际情况,上拉电阻与下拉电阻可以取值在1KΩ~10KΩ之间,其阻值大小与静态电流及系统功耗相关。图3-1给出了一个MCU的输入引脚的三种外部连接方式,假设MCU内部没有上拉或下拉电阻,图中的引脚I3上的开关K3采用悬空方式连接就不合适,因为K3断开时,引脚I3的电平不确定。在图3-1中,R1R2,R3R4,各电阻的典型取值为:R1=20K,R2=1K,R3=10K,R4=200K。44图3-1I/O口输入电路4.输出引脚的基本接法作为通用输出引脚,MCU内部程序向该引脚输出高电平或低电平来驱动器件工作,即开关量输出。如图3-2所示。一种接法是O1引脚直接驱动发光二极管LED,当O1引脚输出高电平时,LED不亮;当O1引脚输出低电平时,LED点亮。这种接法的驱动电流一般在2mA~10mA。另种接法是O2引脚通过一个NPN三极管驱动蜂鸣器,当O2脚输出高电平时,蜂鸣器响;O2脚输出低电平时,蜂鸣器不响。这种接法的驱动电流可达100mA左右,而O2引脚控制电流可以在几个mA左右。若负载需要更大的驱动电流,就必须另外的驱动电路,但对MCU编程来说,没有任何影响。3.2MK60N512VMD100的GPIOMK60N512VMD100的大部分引脚具有多重功能,可以通过编程设定使用其中一种功能。GPIO作为基本功能,MK60N512VMD100有5个GPIO口,共100个引脚。分别为A口、B口、C口、D口、E口。A口有26个引脚,分别为PTA0~PTA19、PTA24~PTA29,B口有20个引脚,分别为PTB0~PTB11、PTB16~PTB23,C口有20引脚,分别为PTC0~PTC19,D口有16个引脚,分别为PTD0~PTD15,E口有18个引脚,分别为PTE0~PTE12、PTE24~PTE28。每个口均包含6个寄存器,下面分别介绍一下。1.数据输出寄存器(GPIOx_PDOR),可读写,32位,复位时为0。无论引脚上的逻辑电平为0还是为1,相应的引脚都被配置为输出。2.数据输入寄存器(GPIOx_PDIR),只读,32位,复位时为0。读为0时,说明相应引脚上为低电平或配置为数字功能,读为1时,说明相应引脚上为高电平。3.数据方向寄存器(GPIOx_PDDR),可读写,32位,复位时为0。0——定义为输入,1——定义为输出。4.输出设置寄存器(GPIOx_PSOR),可写,32位,复位时为0。对该寄存器进行写操作将该表PDOR寄存器的值。写0时,不改变PDOR上的相应位,写1时,将PDOR上的图3-2I/O口输出电路45相应位置1。5.输出清除寄存器(GPIOx_PCOR),可写,32位,复位时为0。对该寄存器进行写操作将该表PDOR寄存器的值。写0时,不改变PDOR上的相应位,写1时,将PDOR上的相应位清0。6.输出触发寄存器(GPIOx_PTOR),可写,32位,复位时为0。对该寄存器进行写操作将该表PDOR寄存器的值。写0时,不改变PDOR上的相应位,写1时,将PDOR上的相应位反转。GPIO的基本编程方法:(1)通过“数据方向寄存器”设置相应引脚为输入或输出;(2)若是输出引脚,则通过“数据输出寄存器”设置引脚输出高电平或低电平;(3)若是输入引脚,则通过“数据输入寄存器”获得引脚的状态。(4)若是输出引脚,可通过“输出设置寄存器”、“输出清除寄存器”、“输出触发寄存器”来改变引脚的状态。3.3开发环境与JTAG写入器嵌入式软件开发有别于桌面软件开发的一个显著的特点,是它一般需要一个交叉编译和调试环境,即编辑和编译软件在通常的PC机上进行,而编译好的软件需要通过写入工具下载到目标机上执行,如MK60N512VMD100的目标机上。由于主机和目标机处理器的体系结构彼此不同,从而增加了嵌入式软件开发的难度。所以选择一些好的开发套件有助于对目标机的学习与开发。本书将介绍IARSystems公司的IAREmbeddedWorkbenchforARM6.10集成开发环境(简称IAR环境)、Freescale公司的CodeWarrior10.1集成开发环境(简称CW环境)、苏州大学的MK60N512VMD100硬件评估板以及JTAG写入器。3.3.1IAR开发环境简介与基本使用方法1.IAR环境功能和特点EmbeddedWorkbenchforARM6.10是IARSystems公司为ARM微处理器开发的一个集成开发环境。比较其他的ARM开发环境,IAR具有入门容易、使用方便和代码紧凑等特点。IAR中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR的功能和使用方法。IAR的主要特点如下:1、高度优化的IARARMC/C++Compiler2、IARARMAssembler3、一个通用的IARXLINKLinker4、IARXAR和XLIB建库程序和IARDLIBC/C++运行库5、功能强大的编辑器6、项目管理器7、命令行实用程序8、IARC-SPY调试器(先进的高级语言调试器)462.IAR环境安装与设置IAR环境安装并不复杂,按提示步骤一步步来即可,光盘中给出了详细的安装步骤。关键要注意IAR环境的设置,这部分光盘中也给出了操作步骤。IAR环境的运行界面如图3-3所示。图3-3IAR环境的运行界面3.3.2CW开发环境简介与基本使用方法1.CW环境功能和特点CodeWarrior开发环境(简称CW环境)是Freescale公司研发的面向FreescaleMCU与DSP嵌入式应用开发的商业软件工具,其功能强大,是Freescale向用户推荐的产品。CodeWarrior分为3个版本:特别版(SpecialEdition)、标准版和专业版。特别版是免费的,用于教学目的,对生成的代码量有一定限制,C语言代码不得超过12KB,对工程包含的文件数目也限制在30个以内。标准版和专业版没有这种限制。3个版本的区别在于用户所获取的授权文件(license)不同,特别版的授权文件随安装软件附带,不需要特殊申请,标准版和专业版的授权文件需要付费。CodeWarrior特别版、标准版和专业版的定义随所支持的微处理器的不同而不同,如CodeWarriorforHC08V6.0、CodeWarriorforHC12V4.6、CodeWarriorforColdFireV6.3等,本书使用CodeWarriorV10.1,这个版本支持所有系列的芯片。CW环境包括以下几个功能模块:编辑器、源码浏览器、搜索引擎、构造系统、调试器、工程管理器。编辑器、编译器、连接器和调试器对应开发过程的四个主要阶段,其它模块用以支持代码浏览和构造控制,工程管理器控制整个过程。该集成环境是一个多线程应用,能在内存中保存状态信息、符号表和对象代码,从而提高操作速度;能跟踪源码变化,进行自47动编译和连接。2.CW环境安装与设置CW环境安装没有什么特别之处,在Windows操作系统上,只要按照安装向导单击鼠标就可以自动完成。需要说明的是,安装完毕以后要上网注册以申请使用许可(licensekey)。无论是下载的软件还是申请到的免费光盘,安装后都要通过因特网注册,以申请使用许可(licenseKey)。这里可通过登录其网站,单击“RequestaKey”实现。由于这一注册过程是在网上自动实现的,故只要网络通畅,这个往返过程在数分种之内即可过完成。申请后会通过E-MAIL得到一个License.dat文件。将该文件复制到相应目录下即可,例如:“C:\ProgramFiles\Freescale\CWMCUv10.1\”。对于免费的特别版本,安装好后用License.dat覆盖安装目录下的License.dat。CW环境的运行界面如图3-4所示。3.3.3JTAG写入器开发人员可以通过JTAG写入器对目标板中的Flash进行擦除、写入等操作。将机器码下载到Flash后,可以进行程序的运行、调试。图3-5给出了写入器的实物图。使用该写入器时,一端连接PC的USB口,一端连接目标板的BDM口。详细的使用说明请见光盘。3.3.4MK60N512VMD100硬件核心板MK60N512VMD100硬件核心板如图3-6所示,该硬件核心板使用144引脚的MAPBGA图3-4CW10.1环境运行界面48封装,为4层电路板。通过扩展板为其供电,扩展板上实现了K系列芯片的大部分模块,其中包括LED,CAN,UART,SD卡,USBOTG,以太网和LCD等模块。扩展板使用两层电路板,提供12V电源输入插头,板上使用LM2576芯片将12V电压转换至3.3V电压。LM2576产生的3.3V电源提供MK60N512VMD100核心板和扩展板上的所有元件,LM2576可以提供3A的输出电流,足够核心板和外设使用。扩展板实物图见图3-7所示。图3-5写入器的实物图图3-6MK60N512VMD100硬件核心板图3-7K系列扩展板3.4IAR工程文件组织嵌入式系统工程往往包含很多文件,如:程序文件、头文件、与编译调试相关的信息文49件、工程说明文件以及工程目标代码文件等。工程文件的合理组织对一个嵌入式系统工程犹为重要,它不但会提高项目的开发效率,同时也降低项目的维护难度。嵌入式系统工程的文件组织方法以硬件对象为核心来展开,系统中每个对象应包含相关的头文件、程序文件及说明文件等。以硬件对象的方式来组织文件,会使得工程结构清晰,调试定位方便,后期维护容易,这也是嵌入式系统软件工程的基本思想。3.4.1工程文件的组织图3-8给出了用I/O口控制小灯闪烁工程的树形结构模板,该模板是苏州大学飞思卡尔
本文标题:ARM Cortex M4嵌入式系统开发实践3
链接地址:https://www.777doc.com/doc-3293294 .html