版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章第一个样例程序及
CodeWarrior工程组织主要内容
3.1通用I/O接口基本概念及连接方法3.2AW60的GPIO3.3开发套件CodeWarrior开发环境与
S08/S12/ColdFire写入器3.4CW环境C语言工程文件的组织3.5第一个C语言工程:控制小灯闪烁3.6第一个汇编语言工程:控制小灯闪烁3.1通用I/O接口基本概念及连接方法1.I/O接口的概念
I/O接口,即输入输出接口,是微控制器同外界进行交互的重要通道。这里的接口英文是port,也可以翻译为“端口”,另一个英文单词是interface,也翻译为接口。在嵌入式系统中,接口千变万化,种类繁多,有显而易见的人机交互接口,如操纵杆、键盘、显示器;也有无人介入的接口,如网络接口、机器设备接口2.通用I/O
所谓通用I/O,也记为GPIO(GeneralPurposeI/O),即基本的输入/输出,有时也称并行I/O,或普通I/O,它是I/O的最基本形式通用I/O接口一般应具备
放置输入或输出控制字的寄存器放置工作方式控制字的寄存器放置要交换数据的寄存器放置反映工作状态的寄存器3.上拉下拉电阻与输入引脚的基本接法
输入引脚有三种不同的连接方式:带上拉电阻的连接、带下拉电阻的连接和“悬空”连接。若MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”。与之相对应,若MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。悬空的芯片引脚被上拉电阻或下拉电阻初始化为高电平或低电平。I/O输入电路4.输出引脚的基本接法作为通用输出引脚,MCU内部程序向该引脚输出高电平或低电平来驱动器件工作,即开关量输出。如图所示。其中O1引脚是发光二极管LED的驱动引脚,当O1引脚输出高电平时,LED不亮;当O1引脚输出低电平时,LED点亮。O2引脚接蜂鸣器驱动电路,当O2脚输出高电平时,蜂鸣器响;O2脚输出低电平时,蜂鸣器不响I/O口输出电路内部结构具有7个I/O端口(A,B,C,D,E,F,G)最多54个通用I/O管脚大多数I/O管脚和片内其它外围模块 功能复用
Slide73.2AW60的GPIO外部管脚具有7个I/O端口(A,B,C,D,E,F,G)最多54个通用I/O管脚(不同封装有别)A:8;B:8;C:7;D:8;E:8;F:8;G:7Slide83.2AW60的GPIO外部管脚具有7个I/O端口(A,B,C,D,E,F,G)38个通用I/O管脚(不同封装有别)A:4;B:4;C:6;D:4;E:8;F:5;G:7Slide93.2AW60的GPIO外部管脚具有7个I/O端口(A,B,C,D,E,F,G)34个通用I/O管脚(不同封装有别)A:2;B:4;C:6;D:4;E:8;F:4;G:6Slide103.2AW60的GPIO外部管脚I/O管脚功能复用
Slide11复位之后,共享的外围模块功能被禁止,因此I/O端口的所有管脚都是作为并行I/O管脚使用。3.2AW60的GPIO管脚方向控制
在MCU内部每个并行端口都配有一个8位的数据寄存器(PTxD)和一个8位的数据方向寄存器(PTxDD,DD:DataDirection)。PTxDD的每一位(PTxDDn)和每一个I/O管脚相对应,控制它作输入还是作输出。PTxDDn=0:对应管脚PTxDn设为输入(上电复位缺省值)PTxDDn=1:对应管脚PTxDn设为输出Slide125.2IO模块结构及功能内部输入上拉
在MCU内部每个并行端口都配有一个8位的输入上拉控制寄存器(PTxPE),控制对应的输入管脚是否允许内部输入上拉。PTxPEn=0:对应输入管脚PTxDn禁止内部输入上拉(上电复位缺省值)PTxPEn=1:对应输入管脚PTxDn允许内部输入上拉——可避免悬空,降低功耗,提高系统可靠性Slide135.2IO模块结构及功能输出驱动能力选择
在MCU内部每个并行端口都配有一个8位的输出驱动控制寄存器(PTxDS),控制对应的输出管脚是否允许高驱动输出。PTxDSn=0:对应输出管脚PTxDn选择低驱动(缺省值,如和IC接口)PTxDSn=1:对应输出管脚PTxDn选择高驱动(如驱动LED)Slide145.2IO模块结构及功能输出驱动能力选择
在MCU内部每个并行端口都配有一个8位的输出驱动控制寄存器(PTxDS),控制对应的输出管脚是否允许高驱动输出。PTxDSn=0:对应输出管脚PTxDn选择低驱动(缺省值,如和IC接口)PTxDSn=1:对应输出管脚PTxDn选择高驱动(如驱动LED)Slide155.2IO模块结构及功能输出摆率控制
在MCU内部每个并行端口都配有一个8位的输出摆率控制寄存器(PTxSE),控制对应的输出管脚是否允许摆率控制。PTxSEn=0:对应输出管脚PTxDn禁止摆率控制(缺省,信号跳变陡,如上图黄)PTxSEn=1:对应输出管脚PTxDn允许摆率控制(信号跳变平坦,如上图粉)Slide165.2IO模块结构及功能输出摆率控制
在MCU内部每个并行端口都配有一个8位的输出摆率控制寄存器(PTxSE),控制对应的输出管脚是否允许摆率控制。PTxSEn=0:对应输出管脚PTxDn禁止摆率控制(缺省,信号跳变陡,40/11ns)PTxSEn=1:对应输出管脚PTxDn允许摆率控制(信号跳变平坦,75/35ns)Slide175.2IO模块结构及功能每个I/O管脚的功能受5个寄存器的控制:
PTxD(PortxDataRegister)PTxDD(DataDirectionforPortxRegister)PTxPE(PortxPullupEnableRegister)PTxDS(OutputDriveStrengthSelectionforPortx)PTxSE(OutputSlewRateControlEnableforPortx)对I/O管脚的控制正是通过对I/O寄存器的控制来实现I/O寄存器分布在MCU存储区域的寄存器空间PTxD和PTxDD分布于0页寄存器空间PTxPE、PTxDS和PTxSE分布于高页寄存器空间Slide185.2IO模块内部寄存器每个I/O管脚的功能受5个寄存器的控制:
PTxD
(PortxDataRegister)
Slide195.2IO模块内部寄存器每个I/O管脚的功能受5个寄存器的控制:
PTxDD
(DataDirectionforPortxRegister)Slide205.2IO模块内部寄存器每个I/O管脚的功能受5个寄存器的控制:
PTxPE
(PortxPullupEnableRegister)Slide215.2IO模块内部寄存器每个I/O管脚的功能受5个寄存器的控制:
PTxDS
(OutputDriveStrengthSelectionforPortx)
Slide225.2IO模块内部寄存器每个I/O管脚的功能受5个寄存器的控制:
PTxSE
(OutputSlewRateControlEnableforPortx)
Slide235.2IO模块内部寄存器管脚复位状态
PTxD=0PTxDD=
0管脚方向:输入PTxPE=0上拉:禁止PTxDS=
0输出驱动:低驱动PTxSE=0输出摆率:禁止MCU复位之后,所有I/O管脚都被配置为不带内部上拉电阻的高阻抗输入管脚。为了避免悬空的输入管脚产生而外的电流损耗,应用程序中的复位初始化子程序要么允许片内上拉电阻,要么改变未使用的管脚的方向为输出,这样管脚就不再悬空。应用中没有用到的I/O管脚必须要端接,这可以避免由于输入悬空而导致电流过载并提高抗噪能力。端接方法有:把未使用管脚通过软件配置为输出,并输出为高或低把未使用管脚通过软件配置为输入,并使用内部或外部上拉电阻Slide245.2IO模块内部寄存器Slide255.2IO模块应用举例[例5.1]根据图示电路编写程序,实现下述功能:将8位开关按键SW[7:0]的状态实时地由8位发光二极管LED[7:0]显示出来。SW开关拨到左边时,输入电平为低,要求LED灭;SW开关拨到右边时,输入电平为高,要求LED亮。Slide265.2IO模块应用举例[例5.1]根据图示电路编写程序,实现下述功能:将8位开关按键SW[7:0]的状态实时地由8位发光二极管LED[7:0]显示出来。SW开关拨到左边时,输入电平为低,要求LED灭;SW开关拨到右边时,输入电平为高,要求LED亮。
INCLUDE MC9S08AW60.inc ;包含头文件
ORG ROMStartIO_Init: LDA #$FF ;为所有I/O管脚配置内部输入上拉,降低系统功耗
STA PTAPE ;为PTA设定内部输入上拉
STA PTBPE ;为PTB设定内部输入上拉
STA PTCPE ;为PTC设定内部输入上拉
STA PTDPE ;为PTD设定内部输入上拉
STA PTEPE ;为PTE设定内部输入上拉
STA PTFPE ;为PTF设定内部输入上拉
STA PTGPE ;为PTG设定内部输入上拉
RTSMain: CLRA ;00H→A CLRX ;00H→X CLRH ;00H→H STA $1802 ;00h→SOPT,DisableCOP JSR IO_Init ;配置I/O管脚内部输入上拉,可选
MOV #$00,PTED ;初始化输出端口的数据寄存器,LED全灭,习惯养成
LDA #%11111111 STA PTEDD ;初始化PTE口的八位管脚作为输出
STA PTEDS ;PTE大电流驱动,使LED更亮,可选Again: LDA PTFD ;读取PTF口的八位开关按键的值
STA PTED ;将按键值实时输出至发光二极管
BRA Again ;死循环
ORG Vreset DC.W Main ;复位向量GPIO的基本编程方法:通过“数据方向寄存器”设置相应引脚为输入或输出若是输出引脚,则设置“端口引脚数据寄存器”引脚输出高电平或低电平若是输入引脚,则通过“端口引脚数据寄存器”获得引脚的状态3.2.2GPIO模块寄存器GPIO模块的每个口最多对应8个GPIO引脚,但各个GPIO口的编程寄存器均为8位,没有对应引脚的位无效。
GPIO模块寄存器的命名有一定的规范,所有寄存器都在AW60芯片寄存器及相关位定义头文件AW60.h中定义。其中“端口数据寄存器”是PT+该端口的名称+D。“端口输出方向寄存器”是PT+该端口的名称+DD。所有寄存器的位编号从0开始,且最低位编号为0。例如,一个8位寄存器的最低位编号为0,最高位编号为7。1.操作GPIO的基本寄存器端口数据方向寄存器DDR(PortDataDirectionRegister)这些位分别控制着端口引脚是输入还是输出,若为0,则引脚为输入,若为1,则引脚为输出。复位时为0x00端口数据寄存器PORT(PortDataRegister)若引脚被配置为输出,PORTn
寄存器中每一位数据决定了对应引脚的输出电平。2.GPIO的基本编程方法举例
以D口第3脚的GPIO功能为例为了程序通用性,对要设置的引脚进行宏定义#defineRUN_PORTPORTD//灯使用的端口#defineRUNpin3//用RUNpin代替“3”当需要对寄存器的具体位进行设置,通常会使用位操作RUN_PORT&=0b11110111//表示将RUN_PORT的第3位设置为0RUN_PORT|=0b00001000//表示将RUN_PORT的第3位设置为1为了程序通用性,以上两行代码需要写成:RUN_PORT&=~(0x01<<RUNpin)//将RUN_PORT的第3位设置为0RUN_PORT|=0x01<<RUNpin//将RUN_PORT的第3位设置为13.3开发套件CodeWarrior开发环境与
S08/S12/ColdFire写入器3.3.1CodeWarrior开发环境简介与基本使用方法1.CodeWarrior环境功能和特点CodeWarrior开发环境(简称CW环境)是Freescale公司研发的面向FreescaleMCU与DSP嵌入式应用开发的商业软件工具,它有3个版本:特别版、标准版、专业版。在其环境下可编制并调试AW60MCU的汇编语言、C语言和C++语言程序。
CW环境包括以下几个功能模块:编辑器、源码浏览器、搜索引擎、构造系统、调试器、工程管理器。2.CW环境安装与设置
按照安装向导单击鼠标就可以自动完成,安装完毕以后要上网注册以申请使用许可(licensekey)。下面是CW环境运行界面CW环境运行界面3.3.2苏州大学S08/S12/ColdFire三合一写入器
开发人员可以通过S08/S12/ColdFire三合一写入器对目标板中的Flash进行擦除、写入等操作,将机器码下载到Flash后,可以进行程序的运行、调试。S08/S12/ColdFire三合一写入器实物图3.3.3SD-AW60EVB硬件评估板SD-AW60EVB硬件评估板3.4CW环境C语言工程文件的组织3.4.1工程文件的逻辑组织结构
右图是小灯闪烁工程相关源文件的树型(逻辑)结构3.4.2工程文件的物理组织结构
上一节从逻辑层面上阐述了些重要的内容,这一节将带着读者去看看它们是如何分布在电脑硬盘中的,即在硬盘中的目录分配情况。下面以小灯程序的文件架构作说明小灯闪烁工程相关源文件的树型(物理)结构CodeWarrior生成的文件工程文件编译、连接可执行连接格式(.elf)目标代码文件(.S19)存储器分配(elf.xMAP)3.4.3系统启动及初始化相关文件连接文件Project.prm关于#pragma指令的简要说明start08.c文件及启动过程AW60映像寄存器头文件MC9S08AW60.h3.4.4芯片初始化、主程序、中断程序及其他文件系统初始化构件(MCUInit.h与MCUInit.c)总头文件Includes.h和主程序文件main.c中断文件isr.h与isr.c芯片无关文件工程说明文件3.4.5机器码文件(.s19文件)的简明解释目标代码文件是以S记录(八种)格式表示的机器码文件类型记录长度地址编码/数据校验和2字节2字节2、3或4字节0~n字节1字节S01E00002E2F4F424A2F4330315F4447313238B3CCD0F2BFF2BCDC2E739BCS1134000A7CF1FFF79003C1640F01801AE1D06181B…S113FFF0400A400A400A400A400A400A400A4000B7S9034000BC3.4.6lst文件与map文件
lst文件
C语言编译后生成LST文件,在LST文件可查看机器码、偏移地址、对应的汇编语句信息,是分析程序的工具之一
map文件
这个文件告诉我们,源代码被编译连接后的机器码,到底被下载到MCU内存储器中的什么地方,在高级调试时,可能需要用到这些知识3.4.7如何在CW环境下新建一个S08工程第一种方法的操作步骤如下
选择File->NewProject,弹出新建对话框,选择“S08S08AFamilyAW60”,点击“下一步”,选中“C”的选项,如果程序中有汇编代码则应该选中“Relocatableassembly”,在右侧Projectname中输入工程名,在Location中选择工程所在目录。单击确定即可第二种方法是使用已存的工程来建立另一个工程。
当在已有工程的基础上,做另一个项目时,比如在Light工程的基础上编写LCD程序,需要进行如下设置更改工程文件夹名为LCD更改Light.mcp为LCD.mcp文件夹Light_Data更改为LCD_Data将bin文件夹的所有内容删掉3.5第一个C语言工程:控制小灯闪烁3.5.1GPIO构件GPIO构件的头文件GPIO.hGPIO构件的程序文件GPIO.c3.5.2Light构件Light构件的头文件Light.hLight构件的程序文件Light.c3.5.3Light测试工程主程序3.5.4理解第一个C工程的执行过程系统上电执行Start08.c文件中的_Startup函数中断程序的执行3.6第一个汇编语言工程:控制小灯闪烁基于汇编语言编程给人的第一感觉是难,相对于其它的高级语言编程,汇编语言在编程的直观性、编程效率等方面有所欠缺,但针对资源相对较少的单片机以及时序要求严格的硬件接口编程,掌握汇编语言还是必不可少的。使用汇编语言编程是基本功,学习和掌握汇编语言编程可以增加编程者的“内力”,为使用高级语言编程打下坚实的基础。3.6.1汇编工程文件的组织小灯闪烁汇编工程相关源文件的树型结构主函数文件(main.asm)
主程序文件main.asm,包含有:工程描述:工程名、硬件连接索引、程序描述、目的、说明、注意、日期等总头文件主程序:主程序一般包括初始化与主循环两大部分。初始化包括堆栈初始化、系统初始化、内存变量初始化、I/O端口初始化、中断初始化等内部直接调用子程序:若有不单独存盘的子程序,建议放在此处外部子程序:若程序使用独立存盘的子程序,可在此处使用“INCLUDE子程序文件名”将其包含。注意,独立存盘的子程序必须与主程序在同一个目录中中断处理程序文件(isr.asm)框架程序文件汇编软件构件文件通用程序文件3.6.2Light构件汇编程序包含:Light构件的汇编头文件Light.incLight构件的汇编程序文件Light.asm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 军事行业安全工作总结
- 构建良好班级氛围的培训总结
- 《新脑血管病的预防》课件
- 2024年江苏省泰州市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年江西省景德镇市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2021年青海省西宁市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2023年湖北省宜昌市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2022年河南省洛阳市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2024年云南省丽江市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 《危险货物运输包装》课件
- 2024年人力资源年度工作总结参考(2篇)
- DB52T 1776.1-2023 耕地质量等别评价 第1部分:评价规范
- 社工个人工作述职报告
- 《人力资源管理》大学期末测试题库500题(含答案)
- 加盟店铺转手合同
- 领导年终总结汇报工作
- CQI-23模塑系统评估审核表-中英文
- 2024年大型游乐设施操作(Y2)特种作业取证(广东)考试复习题库(含答案)
- 《颅内压增高的临床表现》教学课件
- 2024-2025学年北师大版九年级数学上册期中培优试题
- 《建筑工程设计文件编制深度规定》(2022年版)
评论
0/150
提交评论