软件使用说明.docx

上传人:b****6 文档编号:5286838 上传时间:2022-12-14 格式:DOCX 页数:12 大小:353.62KB
下载 相关 举报
软件使用说明.docx_第1页
第1页 / 共12页
软件使用说明.docx_第2页
第2页 / 共12页
软件使用说明.docx_第3页
第3页 / 共12页
软件使用说明.docx_第4页
第4页 / 共12页
软件使用说明.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

软件使用说明.docx

《软件使用说明.docx》由会员分享,可在线阅读,更多相关《软件使用说明.docx(12页珍藏版)》请在冰豆网上搜索。

软件使用说明.docx

软件使用说明

三、基础知识

1.LPC2106/2105/2104特性简介

(注:

只选择了部分与设计任务相关的内容介绍,详细资料参考嵌入式系统课程设计(学生)文件夹中的LPC2106使用手册。

●ARM7TDMI-S处理器;128k字节片内Flash程序存储器,具有ISP和IAP功能。

Flash编程时间:

1ms可编程512字节,扇区擦除或整片擦除只需400ms。

64/32/16K字节静态RAM(LPC2106/2105/2104)。

极小封装:

TQFP48(7×7mm2)。

●向量中断控制器控制中断;双UART,其中一个带有完全的调制解调器接口。

具有I2C串行接口和SPI串行接口;两个定时器,分别具有4路捕获/比较通道;多达6路输出的PWM单元;实时时钟;看门狗定时器;通用I/O口;

●CPU操作频率可达60MHz;双电源:

CPU操作电压范围:

1.65V~1.95V(1.8V±8.3%),I/O电压范围:

3.0V~3.6V(3.3V±10%);两个低功耗模式:

空闲和掉电;片内PLL允许CPU以最大速度运行,可以在超过整个晶振操作频率范围的情况下使用。

主要应用:

Internet网关;串行通信协议转换器;访问控制;工业控制;医疗设备等。

LPC2106/2105/2104包含一个支持仿真的ARM7TDMI-SCPU、与片内存储器控制器接口的ARM7局部总线、与中断控制器接口的AMBA高性能总线(AHB)和连接片内外设功能的VLSI外设总线(VPB,ARMAMBA总线的兼容超集)。

LPC2106/2105/2104将ARM7TDMI-S配置为小端(little-endian)字节顺序。

2.LPC2106/2105/2104存储器重新映射和BOOTBLOCK

AHB外设分配了2M字节的地址范围,它位于4G字节ARM存储器空间的最顶端。

每个AHB外设都分配了16k字节的地址空间。

LPC2106/2105/2104的外设功能(中断控制器除外)都连接到VPB总线。

AHB到VPB的桥接将VPB总线与AHB总线相连。

VPB外设也分配了2M字节的地址范围,从3.5GB地址点开始。

每个VPB外设在VPB地址空间内都分配了16k字节地址空间。

3.引脚说明

LPC2106/2105/2104封装为TQFP48(7×7mm2),考虑到学生设计仿真硬件电路时,PROTEUS中的LPC2106是DIP形式,为避免学生混淆,下面以PROTEUS中DIP形式做管脚说明及使用介绍,其实管脚是完全一致的。

(1)电源和地

双电源:

3.3V(管脚40、17)提供给I/O,1.8V(管脚5)提供给ARM7处理器

地:

管脚43、31、19、7

(2)

(管脚6)复位,复位电路设计参见上图。

(3)RTC(26)K和DBGSEL(27),用作JTAG下载调试,如没有用到可以不接。

(4)XTAL1(11脚)和XTAL2(12脚):

外接晶振。

(5)32个I/O口。

4.管脚配置为GPIO下的几个寄存器设置

⑴寄存器PINSEL0和PINSEL1的设置。

LPC2106的I/O口全都是3功能服用端口,也就是说即可用作普通输入输出端口,又用作第2或第3种功能。

设计人员可根据需要设置两个32位特殊功能寄存器PINSEL0和PINSEL1。

PINSEL0对应引脚P0.0~P0.15,PINSEL1对应引脚P0.16~P0.31。

都是寄存器中用两位来完成1根引脚的功能设置。

例如:

2GPIO方向寄存器设置

当管脚配置为GPIO模式时,可使用该寄存器控制管脚的方向。

任意管脚的方向位的设置必须与管脚功能一致。

⑶输出置1寄存器IOSET

当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出高电平。

写入1使对应管脚输出高电平。

写入0无效。

如果一个管脚被配置为输入或第二功能,写IOSET无效。

⑷输出清零寄存器IOCLR

当管脚配置为GPIO输出模式时,可使用该寄存器从管脚输出低电平。

写入1使对应管脚输出低电平。

写入0无效。

如果一个管脚被配置为输入或第二功能,写IOCLR无效。

如果指定输出管脚在GPIO输出置位寄存器(IOSET)和GPIO输出清零寄存器(IOCLR)中的对应位都置位,那么管脚的输出电平取决于后写入的寄存器的值。

例如:

IOSET=0x00000080

IOCLR=0x00000080

P0.7输出电平为低,因为写GPIO清零寄存器在写置位寄存器之后。

四、软件调试

软件调试步骤如下:

1.启动ADS1.2,选择Codewarrior…

2.新建工程项目,项目类型为ARMExecutableImage,并在Projectname下输入工程名

3.右键单击空白处,添加所需项目文档进工程,见下图,除main.c是用户自己编写的应用程序外,其余的文件都是LPC2106的启动代码,简单应用无需更改。

4.点击图标

,进行工程相关设置

⑴选ARMFORELF,用PROTEUS仿真必须选择。

 

⑵设置代码起始地址(0x00000000)与数据起始地址(0x40000000)

⑶设置程序入口地址

⑷设置输出文件类型及文件名,用PROTEUS仿真必须选择INTEL32bitHex文件类型,文件名可随意输入。

全部设置完后点OK退出并保存设置。

⑸联合编译,点图标

如无错误,会得到编译信息,并会发现生成了自己命名的HEX文件。

⑹将HEX文件加载在PROTEUS中的PC2106中运行。

观察程序执行结果是否达到预期目标。

五、十字路口交通灯控制源程序仿真效果图

设计任务二uC/OS-Ⅱ的移植与应用

一、设计目的:

1.了解嵌入式实时操作系统μC/OS-II可移植、可裁剪等性能特点,正确理解实时操作系统中任务、信号、消息、中断等基本概念以及μC/OS-II多任务管理的调度算法;

2.掌握μC/OS-II在ARM7上移植的方法;

3.能将μC/OS-II移植在LPC2106中,并根据具体要求创建用户任务,解决实际问题;

二、具体任务:

1.μC/OS-II移植在LPC2106中。

2.编写用户任务程序,完成实时温度的采集控制。

硬件电路见参考硬件电路图,图中用滑动变阻器代替温度传感器转换后的电压,用ADC0809完成A/D转换,并用数码管显示出来。

三、基础知识

1.嵌入式操作系统

随着计算机技术的迅速发展和芯片制造工艺的不断进步,嵌入式系统的应用日益广泛:

从民用的电视、手机等电路设备到军用的飞机、坦克等武器系统,到处都有嵌入式系统的身影。

在嵌入式系统的应用开发中,采和嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。

这已逐渐成为嵌入式系统开发的一个发展方向。

嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件。

它是嵌入式系统(包括硬、软件系统)极为重要的组成部分,通常包括与硬件相关的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器Browser等。

嵌入式实时操作系统有很多,如VxWorks、PalmOS、WindowsCE等。

这些操作系统均属于商品化产品,价格昂贵且由于源泉代码不公开导致了诸如对设备的支持、应用软件的移植等一系列的问题;而开放源码的RTOS在成本和技术上有其特有的优势,在RTOS领域占有越来越重要的地位,例如μC/OS-II、uCLinux等。

2.μC/OS-II简介

μC/OS-II是专门为计算机的嵌入式应用设计的,是一个简单、高效的嵌入式实时操作系统内核,绝大部分代码是用C语言编写的。

CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。

目前,它支持x86、ARM、PowerPC、MIPS等众多体系结构,并有上百个商业应用实例,其稳定性和可用性是经过实践验证的。

同时,它的源代码公开,可以从www.ucos-网站上获得全部源码以及其在各种体系结构平台上的移植范例。

最新的μC/OS-II2.0版以上的内核都具有可抢占的实时多任务调度功能,另外它还提供了许多系统服务,例如信号量、消息队列、邮箱、内存管理、时间函数等,这些功能可以根据不同的需求进行裁减。

可以说,uC/OS-II是一个具备现代操作系统特点的RTOS,同时它结构清晰、注解详尽,具有良好的可扩展性和可移植性,被广泛地应用于各种架构的微处理器上。

μC/OS具有执行效率高、占用空间小、实时性能优良和可扩展性能等特点,最小内核可编译至2KB。

μC/OS-II已经移植到了几乎所有知名的CPU上。

3.μC/OS-II在ARM7上的移植

μC/OS-II的移植代码主要分为3部分,第1部分是与处理器无关的代码,这部分无需更改,直接添加(附在嵌入式系统课程设计(学生)->流水灯项目->SOURCE文件夹中);第2部分是与应用相关的两个头文件OS_CONFIG.H、INCLUDES.H;第3部分是与处理器相关的代码,也是μC/OS-II移植的关键,主要由3个文件构成:

Os_cpu.h、Os_cpu_c.c、Os_cpu_c.s。

      ●Os_cpu.h:

该文件中主要定义了与处理器相关的数据类型,软件中断符号。

因为ucos不适用C语言中的short,int和long等数据类型,因为他们与处理器类型相关,隐含着不可移植性,因此需定义与处理器相关的数据类型,便于移植;而定义的软件中断符号是为了在发生软件中断时,根据定义的软件中断号,跳转到指定的软件中断服务程序。

  

(1)定义与编译器相关的数据类型:

为了保证可移植性,程序中没有直接使用C语言中的short,int及long等数据类型的定义,因为他们与处理器类型相关,隐含着不可移植性;而是自己定义了一套数据类型。

  

(2)选择开关中断的方式,同时定义软件中断符号。

  (3)定义栈的增长方向:

虽然ARM处理器核对于两种栈的增长方式(向上/向下)都支持,但GCC的C语言编译器仅支持一种方式,即从上往下增长,并且是满递减堆栈。

所以OS_STK_GROWTH的值为1,

    ●Os_cpu_c.c:

该文件主要进行任务堆栈的初始化(OS_STK*OSTaskStkInit)和软件中断服务程序(voidSWI_Exception)。

软件中断服务程序中主要是对os_cpu.h中除了00,01中断号的其余中断标志号进行处理。

在该文件要编写10个简单的C函数,但是只有一个函数是必要的,其余的必须声明,但不一定要包含任何代码,唯一需要编写的是OSTaskStkInit()。

这个函数的功能主要是初始化任务的栈结构,在ARM体系结构下,任务堆栈空间由高至低依次将保存着pc、lr、r12、r11、r10、...r1、r0、CPSR、SPSR,因此在初始化任务堆栈空间时,应该与ARM体系结构中一样。

    ●Os_cpu_c.s:

该文件中包括软件中断标号入口处理SoftwareInterrupt,启动优先级最高的任务OSStartHighRdy,任务切换时的堆栈处理OSIntCtxSw和OSIntCtxSw_1。

当发生软件中断时,便跳到SoftwareInterrupt标号处,然后根据其中断号进行相应的处理OSStartHighRdy启动就绪态中任务优先级最高的任务。

OSIntCtxSw保存被中断任务的一些状态寄存器保存到该模式下的堆栈中,当优先级高的任务完成后,再从堆栈中返回。

而OSIntCtxSw_1是任务切换时,对新任务所做的堆栈处理。

4.μC/OS-II的多任务调度

μC/OS-Ⅱ以及绝大多数商业上销售的实时内核都是可剥夺型内核。

最高优先级的任务一旦就绪,总能得到CPU的控制权。

当一个运行着的任务使一个比它优先级高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了CPU的控制权。

如果是中断服务子程序使一个高优先级的任务进入就绪态,中断完成时,中断了的任务被挂起,优先级高的那个任务开始运行。

5.根据应用,划分任务,编写程序。

对于本任务可划分为3个任务,第一个任务按键识别;第二个任务A/D转换;第三个任务数码管显示。

仿真效果如下图所示,按下启动键,ADC0808将通道0的电压值转换并在数码管上显示出来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 院校资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1