《嵌入式系统设计实战基于飞思卡尔S12X微控制器》课件Chap03.ppt
- 文档编号:18729748
- 上传时间:2023-10-21
- 格式:PPT
- 页数:34
- 大小:3.56MB
《嵌入式系统设计实战基于飞思卡尔S12X微控制器》课件Chap03.ppt
《《嵌入式系统设计实战基于飞思卡尔S12X微控制器》课件Chap03.ppt》由会员分享,可在线阅读,更多相关《《嵌入式系统设计实战基于飞思卡尔S12X微控制器》课件Chap03.ppt(34页珍藏版)》请在冰点文库上搜索。
第3章第一个样例程序及ColdFire工程组织,本章目录,3.1通用I/O接口基本概念及连接方法3.2XS128的GPIO寄存器与GPIO构件封装3.3CodeWarrior开发环境与S08/S12/ColdFire三合一写入器3.4CW环境C语言工程文件的组织3.5第一个C语言工程:
控制小灯闪烁3.6第一个汇编语言工程:
控制小灯闪烁,3.1通用I/O接口基本概念及连接方法,I/O接口的概念即输入输出接口,是微控制器同外界进行交互的重要通道。
通用I/O:
记为GPIO,即基本的输入/输出。
作为通用输入引脚,即开关量输入。
作为通用输出引脚,即开关量输出。
大多数通用I/O引脚可以通过编程来设定工作方式为输入或输出,称之为双向通用I/O。
3.1通用I/O接口基本概念及连接方法,上拉下拉电阻与输入引脚的基本接法MCU的某个引脚通过一个电阻接到电源(Vcc)上,这个电阻被称为“上拉电阻”;MCU的某个引脚通过一个电阻接到地(GND)上,则相应的电阻被称为“下拉电阻”。
接法1:
引脚I1通过上拉电阻R1接到Vcc,选择R1R2;K1断开时,引脚I1为高电平,K1闭合时,引脚I1为低电平。
接法2:
引脚I2通过下拉电阻R4接到Vcc,选择R3R4;K2断开时,引脚I2为低电平,K2闭合时,引脚I2为高电平。
接法3:
引脚I3处于悬空状态,K3断开时,引脚I3的电平不确定(这样不好)。
3.1通用I/O接口基本概念及连接方法,输出引脚的基本接法,接法1:
引脚O1直接驱动发光二极管LED,当引脚O1输出高电平时,LED不亮;当引脚O1输出低电平时,LED点亮。
接法2:
引脚O2通过一个NPN三极管驱动蜂鸣器,当引脚O2输出高电平时,蜂鸣器响;引脚O2输出低电平时,蜂鸣器不响。
3.2XS128的GPIO寄存器与GPIO构件封装,3.2.1XS128的GPIO寄存器,9个GPIO口(A口,B口,E口,J口,M口,P口,S口,T,口AD口)A、B、E、T、AD都有8个引脚,而J口有2个引脚,M口有6个引脚,S口有4个引脚,P口有7个引脚引脚其他寄存器,3.2XS128的GPIO寄存器与GPIO构件封装,数据方向寄存器决定了相对应引脚是输入还是输出,数据寄存器与输入寄存器设置对应引脚为高电平
(1)或低电平(0),3.2XS128的GPIO寄存器与GPIO构件封装,低功耗驱动寄存器低功耗输出,记忆要点:
输出时:
低功耗驱动寄存器的一位:
0输出功耗正常,1输出功耗为正常的1/5,上拉下拉电阻使能寄存器与上拉下拉选择寄存器禁用或允许上拉或下拉电阻,记忆要点:
输出时:
数据寄存器的一位:
0输出低电平,1输出高电平,记忆要点:
上拉下拉使能寄存器的一位:
0无上拉或下拉,1有上拉或下拉,记忆要点:
上拉下拉使能寄存器的一位:
0无上拉或下拉,1有上拉或下拉,3.2XS128的GPIO寄存器与GPIO构件封装,A、B、E口共用的上拉电阻控制寄存器(PUCR)共用一个控制寄存器(PUCR)决定了相对应引脚是输入还是输出,记忆要点:
在引脚PORTA被定义成输入时,可通过上拉电阻允许寄存器PUCR中的PUPAE位来定义有无内部上拉电阻:
0没有内部上拉电阻1有内部上拉电阻,A、B、E口共用的低功耗驱动寄存器(RDRIV)共用一个控制寄存器(RDRIV)设置对应引脚为高电平
(1)或低电平(0),记忆要点:
输出时:
数据寄存器的一位:
0输出低电平,1输出高电平,记忆要点:
在引脚被定义为低功耗驱动时,可通过低功耗允许寄存器RDRIV中的相应位来定义是否低功耗驱动使能:
0不允许低功耗驱动使能1允许低功耗驱动使能。
记忆要点:
在引脚被定义为低功耗驱动时,可通过低功耗允许寄存器RDRIV中的相应位来定义是否低功耗驱动使能:
0不允许低功耗驱动使能1允许低功耗驱动使能。
3.2XS128的GPIO寄存器与GPIO构件封装,AD口也可以设置低功耗驱动功能个引脚可以分别设置低功耗驱动功能,记忆要点:
在引脚被定义成低功耗驱动时,可通过低功耗驱动寄存器RDR0AD0和RDR1AD0中相应的位来定义相应引脚是否低功耗驱动:
0不允许低功耗驱动使能1允许低功耗驱动使能。
中断使能寄存器与中断标志寄存器设置对应引脚为高电平
(1)或低电平(0),记忆要点:
输出时:
数据寄存器的一位:
0输出低电平,1输出高电平,中断使能寄存器的对应位若为1,则设置中断相应使能;若为0,则设置为禁止相应中断,中断标志寄存器表征中断是否已经产生:
若中断标志寄存器的某一位为1,则表明相应中断已经产生;若为0,则相应中断未产生,3.2XS128的GPIO寄存器与GPIO构件封装,线或寄存器,寄存器的对应位若为1,则该位对应引脚为输出线或模式(即开漏);若为0,则该位对应引脚为输出推拉模式注意:
引脚设置为输入,该寄存器设置无效,记忆要点:
输出时:
数据寄存器的一位:
0输出低电平,1输出高电平,记忆要点:
在引脚被定义为低功耗驱动时,可通过低功耗允许寄存器RDRIV中的相应位来定义是否低功耗驱动使能:
0不允许低功耗驱动使能1允许低功耗驱动使能。
3.2XS128的GPIO寄存器与GPIO构件封装,GPIO的简单编程方法置位与清位的编程方法置位、清0等3个宏定义,#defineBSET(bit,Register)(Register)|=(1(bit)&1)/得到寄存器中某一位状态,3.2XS128的GPIO寄存器与GPIO构件封装,开关量输出的编程方法首先初始化端口引脚的数据方向为输出,然后运用该引脚的数据寄存器进行数据输出,BSET(4,DDRB);/B口的第4引脚初始化为输出BSET(4,PORTB);/B口的第4引脚输出高电平(0),开关量输入的编程方法首先初始化端口的引脚数据方向为输入,然后运用该引脚将外界数据输入给对应数据寄存器中,BCLR(3,DDRB);/B口的第3引脚初始化为输入Data=BGET(3,PORTB);/获得B口第3引脚的输入数据赋给变量Data,3.3CodeWarrior开发环境与S08/S12/ColdFire三合一写入器,3.3.1CW环境功能和特点,3个版本:
特别版(SpecialEdition)标准版专业版功能模块:
编辑器、源码浏览器搜索引擎、构造系统调试器、工程管理器,3.3CodeWarrior开发环境简介,3.3.2CW环境安装与设置安装后上网注册,3.3CodeWarrior开发环境与S08/S12/ColdFire三合一写入器,3.3.2S08/S12/ColdFire三合一写入器,3.3CodeWarrior开发环境与S08/S12/ColdFire三合一写入器,3.3.3MC9S12XS128硬件评估板,3.4CW环境C语言工程文件的组织,工程文件的逻辑组织结构,3.4CW环境C语言工程文件的组织,工程文件的物理组织结构,3.4CW工程文件组织,3.4.4链接文件及机器码文件链接文件linker.lcf:
该文件提供了工程在链接时所需要的参数信息。
一般情况下,该文件不需要修改。
目标文件.s19文件CodeWarrior生成三个文件分别是elf、sl9、.elf.xMAP。
S19格式的文件写入到Flash中。
3.4CW环境C语言工程文件的组织,prm文件有五个组成部分构成NAMESEND部分SEGMENTSEND部分PLACEMENTEND部分STACKSIZE部分VECTOR部分,3.4CW环境C语言工程文件的组织,关于#pragma指令的简要说明#pragmaDATA_SEG#pragmaCONST_SEG#pragmaCODE_SEG#pragmaTRAP_PROC,3.4CW环境C语言工程文件的组织,start12.c文件及启动过程设置堆栈指针,将其映射到RAM空间初始化RAM,复制初始数据,将初始化数据从ROM复制到RAM跳转到主函数main()执行,XS128映像寄存器头文件MC9S12XS128.h,3.4CW环境C语言工程文件的组织,3.4.4芯片初始化、主程序、中断程序及其他文件1系统初始化构件(MCUInit.h与MCUInit.c)2总头文件Includes.h和主程序文件main.c3中断文件isr.c4芯片无关文件类型定义文件Type.h通用函数文件GeneralFun.h和GeneralFun.c5工程说明文件,S19文件格式分析:
S01E00002E2F4F424A2F4330315F4447313238B3CCD0F2BFF2BCDC2E733139BCS1134000A7CF1FFF79003C1640F01801AE1D06181BS113FFF0400A400A400A400A400A400A400A4000B7S9034000BC,目标代码文件是以S记录(八种)格式表示的机器码文件,3.4CW工程文件组织,3.4CW环境C语言工程文件的组织,编译链接还产生lst文件与map文件,新建工程有两种方法使用工程模板使用已存在的工程复制一份继续进行新的工程编程,为了复用代码,提高编程效率和增强代码的可移植性,在控制小灯闪烁的实例编程中使用了构件化的思想。
程序中定义了以下构件:
GPIO构件:
用于实现对所有GPIO引脚统一编程。
包括构件头文件GPIO.h和构件源文件GPIO.c。
Light构件:
控制指示灯的明暗。
通过调用GPIO构件完成。
包括构件头文件Light.h和构件源文件Light.c。
3.5第一个C语言工程:
控制小灯闪烁,3.5第一个应用实例:
控制小灯闪烁,3.5.2Light构件编程Light.h文件:
对三盏灯使用的端口和引脚进行宏定义,并给出灯控制相关函数的声明语句。
Light.c文件:
给出两个灯控制函数的具体定义。
这两个函数均调用了GPIO构件中的函数来实现。
3.5第一个应用实例:
控制小灯闪烁,3.5.3Light测试工程主程序,一盏灯交替亮、暗Light_Run灯接TC口的1引脚两盏灯交替亮、暗Light_Run灯接TC口的1引脚Light_Error灯接TC口的2引脚三盏灯交替亮、暗Light_Run灯接TC口的1引脚Light_Error灯接TC口的2引脚Light_Link灯接LD口的2引脚,3.6理解第一个C工程的执行过程,系统上电,STACKSIZE0x100/初始化堆栈大小VECTOR0_Startup/复位向量,初始化堆栈初始化RAM复制初始数据初始化ROM系统模块初始化并跳转到main主程序,执行用户自定义的main程序,硬件中断机制始终开启,并实时的“监听”内外环境而恰当地激发特定的事务处理过程,3.6第一个汇编语言工程:
控制小灯闪烁,汇编工程文件的组织1.主函数文件(main.asm)2.中断处理程序文件(isr.asm)3.框架程序文件4.汇编软件构件文件5.通用程序文件,3.5第一个应用实例:
控制小灯闪烁,3.5.2Light构件汇编程序Light.inc文件:
对三盏灯使用的端口和引脚进行宏定义,并给出灯控制相关函数的声明语句。
Light.asm文件:
给出两个灯控制函数的具体定义。
这两个函数均调用了GPIO构件中的函数来实现,3.6理解第一个C工程的执行过程,系统上电,从复位向量处取出程序执行的首地址,跳转并按该地址执行VECTOR0_Startup/复位向量,执行main.asm文件中的_Startup函数对堆栈指针进行初始化芯片及所用到的模块进行初始化,执行用户自定义的main程序,硬件中断机制始终开启,并实时的“监听”内外环境而恰当地激发特定的事务处理过程,谢谢!
Ver2.0,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式系统设计实战基于飞思卡尔S12X微控制器 嵌入式 系统 设计 实战 基于 卡尔 S12X 控制器 课件 Chap03