第一个样例程序及codewarrior工程组织

上传人:suns****4568 文档编号:90234872 上传时间:2019-06-10 格式:PPT 页数:31 大小:2.93MB
返回 下载 相关 举报
第一个样例程序及codewarrior工程组织_第1页
第1页 / 共31页
第一个样例程序及codewarrior工程组织_第2页
第2页 / 共31页
第一个样例程序及codewarrior工程组织_第3页
第3页 / 共31页
第一个样例程序及codewarrior工程组织_第4页
第4页 / 共31页
第一个样例程序及codewarrior工程组织_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《第一个样例程序及codewarrior工程组织》由会员分享,可在线阅读,更多相关《第一个样例程序及codewarrior工程组织(31页珍藏版)》请在金锄头文库上搜索。

1、第3章 第一个样例程序及 CodeWarrior工程组织,主要内容,3.1 通用I/O接口基本概念及连接方法 3.2 AW60的GPIO 3.3 开发套件CodeWarrior开发环境与 S08/S12/ColdFire写入器 3.4 CW环境C语言工程文件的组织 3.5 第一个C语言工程:控制小灯闪烁 3.6 第一个汇编语言工程:控制小灯闪烁,3.1 通用I/O接口基本概念及连接方法,1. I/O接口的概念 I/O接口,即输入输出接口,是微控制器同外界进行交互的 重要通道。这里的接口英文是port,也可以翻译为“端口”, 另一个英文单词是interface,也翻译为接口。在嵌入式系统中, 接

2、口千变万化,种类繁多,有显而易见的人机交互接口,如操 纵杆、键盘、显示器;也有无人介入的接口,如网络接口、机 器设备接口 2通用I/O 所谓通用I/O,也记为GPIO(General Purpose I/O),即基 本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最 基本形式,通用I/O接口一般应具备 放置输入或输出控制字的寄存器 放置工作方式控制字的寄存器 放置要交换数据的寄存器 放置反映工作状态的寄存器 3上拉下拉电阻与输入引脚的基本接法 输入引脚有三种不同的连接方式:带上拉电阻的连接、带下拉电阻的连接和“悬空”连接。,若MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个

3、电阻被称为“上拉电阻”。与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。悬空的芯片引脚被上拉电阻或下拉电阻初始化为高电平或低电平。,I/O输入电路,4.输出引脚的基本接法 作为通用输出引脚,MCU内部程序 向该引脚输出高电平或低电平来驱动 器件工作,即开关量输出。如图所示。 其中O1引脚是发光二极管LED的驱动引 脚,当O1引脚输出高电平时,LED不亮; 当O1引脚输出低电平时,LED点亮。O2 引脚接蜂鸣器驱动电路,当O2脚输出高 电平时,蜂鸣器响;O2脚输出低电平时, 蜂鸣器不响,I/O口输出电路,3.2 AW60的GPIO,3.2.1 AW6

4、0 GPIO编程的基本原理与编程基本方法 AW60的大部分引脚具有多 重功能,可以通过编程设定使 用其中一种功能。 AW60有7个 GPIO口,每个GPIO口的名称由 一位英文字母组成,分别是A、 B、C、D、E、F、G。右图给出 了AW60的7个GPIO口的引脚分布 情况。,GPIO模块框图,GPIO的基本编程方法: 通过“数据方向寄存器”设置相应引脚为输入或输出 若是输出引脚,则设置“端口引脚数据寄存器”引脚输出高电平或低电平 若是输入引脚,则通过“端口引脚数据寄存器”获得引脚的状态,3.2.2 GPIO模块寄存器,GPIO模块的每个口最多对应8个GPIO引脚,但各个GPIO口 的编程寄存

5、器均为8位,没有对应引脚的位无效。 GPIO模块寄 存器的命名有一定的规范,所有寄存器都在AW60芯片寄存器及 相关位定义头文件AW60.h中定义。其中“端口数据寄存器”是 PT+该端口的名称+D。“端口输出方向寄存器”是PT+该端口的 名称+DD。所有寄存器的位编号从0开始,且最低位编号为0。例如,一个8位寄存器的最低位编号为0,最高位编号为7。,1操作GPIO的基本寄存器 端口数据方向寄存器DDR(Port Data Direction Register) 这些位分别控制着端口引脚是输入还是输出,若为0,则引 脚为输入,若为1,则引脚为输出。复位时为0x00 端口数据寄存器PORT(Por

6、t Data Register) 若引脚被配置为输出,PORTn 寄存器中每一位数据决定了对 应引脚的输出电平。复位时PORTn 寄存器的所有被使用的位为1,2GPIO的基本编程方法举例 以D口第3脚的GPIO功能为例 为了程序通用性,对要设置的引脚进行宏定义 #define RUN_PORT PORT_D / 灯使用的端口 #define RUNpin 3 / 用RUNpin代替“3” 当需要对寄存器的具体位进行设置,通常会使用位操作 RUN_PORT &= 0b11110111 /表示将RUN_PORT的第3位设置为0 RUN_PORT |= 0b00001000 /表示将RUN_PORT

7、的第3位设置为1 为了程序通用性,以上两行代码需要写成: RUN_PORT &= (0x01 RUNpin) /将RUN_PORT的第3位设置为0 RUN_PORT |= 0x01 RUNpin /将RUN_PORT的第3位设置为1,3.3 开发套件CodeWarrior开发环境与 S08/S12/ColdFire写入器,3.3.1 CodeWarrior开发环境简介与基本使用方法 1CodeWarrior环境功能和特点 CodeWarrior开发环境(简称CW环境)是Freescale公司研发的面向Freescale MCU与DSP嵌入式应用开发的商业软件工具,它有3个版本:特别版、标准版、

8、专业版。在其环境下可编制并调试AW60 MCU的汇编语言、C语言和C+语言程序。 CW环境包括以下几个功能模块:编辑器、源码浏览器、搜索引擎、构造系统、调试器、工程管理器。 2CW环境安装与设置 按照安装向导单击鼠标就可以自动完成,安装完毕以后要上网注册以申请使用许可(license key)。下面是CW环境运行界面,CW环境运行界面,3.3.2 苏州大学S08/S12/ColdFire 三合一写入器,开发人员可以通过S08/S12/ColdFire 三合一写入器对目标板中的Flash进行擦除、写入等操作,将机器码下载到Flash后,可以进行程序的运行、调试。,S08/S12/ColdFire

9、三合一写入器实物图,3.3.3 SD-AW60EVB硬件评估板,SD-AW60EVB硬件评估板,3.4 CW环境C语言工程文件的组织,3.4.1 工程文件的逻辑组织结构,右图是小灯闪烁工程相关源 文件的树型(逻辑)结构,3.4.2 工程文件的物理组织结构,上一节从逻辑层面上阐述了些重要的内容,这一节将带着 读者去看看它们是如何分布在电脑硬盘中的,即在硬盘中的目 录分配情况。下面以小灯程序的文件架构作说明,小灯闪烁工程相关源文件的树型(物理)结构,CodeWarrior生成的文件,工程 文件,编译、连接,可执行连接格式(.elf),目标代码文件(.S19),存储器分配(elf.xMAP),3.4

10、.3 系统启动及初始化相关文件,连接文件Project.prm 关于#pragma指令的简要说明 start08.c文件及启动过程 AW60映像寄存器头文件MC9S08AW60.h,3.4.4 芯片初始化、主程序、中断程序及其他文件,系统初始化构件(MCUInit.h与MCUInit.c) 总头文件Includes.h和主程序文件main.c 中断文件isr.h与isr.c 芯片无关文件 工程说明文件,3.4.5 机器码文件(.s19文件)的简明解释,目标代码文件是以S记录(八种)格式表示的机器码文件,S01E00002E2F4F424A2F4330315F4447313238B3CCD0F2

11、BFF2BCDC2E739BC S1134000A7CF1FFF79003C1640F01801AE1D0618 1B S113FFF0400A400A400A400A400A400A400A4000 B7 S9034000 BC,3.4.6 lst文件与map文件,lst文件 C语言编译后生成LST文件,在LST文件可查看机器码、偏移地址、对应的汇编语句信息,是分析程序的工具之一 map文件 这个文件告诉我们,源代码被编译连接后的机器码,到底被下载到MCU内存储器中的什么地方,在高级调试时,可能需要用到这些知识,3.4.7 如何在CW环境下新建一个S08工程,第一种方法的操作步骤如下 选择F

12、ile-New Project,弹出新建对话框,选择“S08 S08A Family AW60”,点击“下一步”,选中“C”的选项,如果程序中有汇编代码则应该选中“Relocatable assembly”,在右侧Project name中输入工程名,在Location中选择工程所在目录。单击确定即可 第二种方法是使用已存的工程来建立另一个工程。 当在已有工程的基础上,做另一个项目时,比如在Light工程的基础上编写LCD程序,需要进行如下设置 更改工程文件夹名为LCD 更改Light.mcp为LCD.mcp 文件夹Light_Data更改为LCD_Data 将bin文件夹的所有内容删掉,3.

13、5 第一个C语言工程:控制小灯闪烁,3.5.1 GPIO构件 GPIO构件的头文件GPIO.h GPIO构件的程序文件GPIO.c 3.5.2 Light构件 Light构件的头文件Light.h Light构件的程序文件Light.c 3.5.3 Light测试工程主程序 3.5.4 理解第一个C工程的执行过程 系统上电 执行Start08.c文件中的_Startup函数 中断程序的执行,3.6 第一个汇编语言工程:控制小灯闪烁,基于汇编语言编程给人的第一感觉是难,相对于其它的高级语言编程,汇编语言在编程的直观性、编程效率等方面有所欠缺,但针对资源相对较少的单片机以及时序要求严格的硬件接口编

14、程,掌握汇编语言还是必不可少的。使用汇编语言编程是基本功,学习和掌握汇编语言编程可以增加编程者的“内力”,为使用高级语言编程打下坚实的基础。,3.6.1 汇编工程文件的组织,小灯闪烁汇编工程相关源文件的树型结构,主函数文件(main.asm) 主程序文件main.asm,包含有: 工程描述:工程名、硬件连接索引、程序描述、目的、说明、注意、日期等 总头文件 主程序:主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、系统初始化、内存变量初始化、I/O端口初始化、中断初始化等 内部直接调用子程序:若有不单独存盘的子程序,建议放在此处 外部子程序:若程序使用独立存盘的子程序,可在此处使用“

15、INCLUDE子程序文件名”将其包含。注意,独立存盘的子程序必须与主程序在同一个目录中,中断处理程序文件(isr.asm) 框架程序文件 汇编软件构件文件 通用程序文件,3.6.2 Light构件汇编程序,包含: Light构件的汇编头文件Light.inc Light构件的汇编程序文件Light.asm 3.6.3 Light测试工程主程序 首先调用LightInit函数,初始化所需的每一盏指示灯。注意初始化时,要让每一盏灯初始状态为“暗”。随后,通过Light_L_A函数控制指示灯亮、暗。在指示灯亮暗之间增加适当的延时后,就能够在程序运行时,较明显的看到指示灯闪烁的现象,3.6.4 理解第

16、一个汇编工程的执行过程,系统上电 系统在加电过后,芯片内的硬件机制会产生加电复位中断,这时系统到向量表中查找复位向量地址,并转向这个地址继续执行。在本书所有工程样例,到*.prm文件中都可以找到异常向量表,在该表的第一行是复位中断向量地址: VECTOR 0 _Startup / 复位向量 堆栈指针初始化及芯片初始化 执行main.asm文件中的_Startup函数,对堆栈指针进行初始化,以及芯片及所用到的模块进行初始化 中断程序的执行 当某个中断发生后,MCU将转到中断向量表文件isr.asm所指定的中断入口地址处开始执行中断服务程序(ISR,Interrupt Service Routine)。在这个过程中,系统必然会保存“上下文”(CPU寄存器的内容),在中断处理结束前,必须恢复该“上下文”,以便继续执行原来的程序。中

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号