嵌入式系统及应用

上传人:z**** 文档编号:112465613 上传时间:2022-06-22 格式:DOC 页数:31 大小:168.50KB
收藏 版权申诉 举报 下载
嵌入式系统及应用_第1页
第1页 / 共31页
嵌入式系统及应用_第2页
第2页 / 共31页
嵌入式系统及应用_第3页
第3页 / 共31页
资源描述:

《嵌入式系统及应用》由会员分享,可在线阅读,更多相关《嵌入式系统及应用(31页珍藏版)》请在装配图网上搜索。

1、嵌入式系统及应用嵌入式系统及应用实验指导书.、八、-前言 嵌入式软件开发实验内容是结合嵌入式软件开发及应用这门课程的核心 内容所精心设计的。实验采用的是优龙公司YLLPC2148开发板,其核心芯 片是飞利浦LPC2148芯片。实验内容涵盖了从基本工程的建立方法到嵌入式操作 系统的移植,从基本IAR环境的设置到芯片主要功能模块的驱动和测试等主要知 识点和工作流程。实验设置的目的是从实际出发,让同学们将课堂上的内容学以致 用;将枯燥的书面信息跃然板上,更可以调动同学们的动手兴趣,提高学习热情。 另外,所有实验都有其实际应用价值,能为同学们今后走向工作岗位快速进入良 好的工作状态打下良好的实践基础。

2、嵌入式软件开发实验共分五次课,每次三学时,下面是实验安排:实验一:IAR环境的使用及LPC2148存储器映射实验二:GPIO与频率控制实验三:中断控制及UART通信实验四:LCD控制与综合实验五:口C/OS移植为了提高学生实验课的学习效率,在每次实验的指导中给出了实验的基本原 理并对其关键点进行了详细的阐述,还包括相关寄存器的物理地址等信息。每 次实验课中都设置了成若干小的实验项目,并针对各个实验项目都设有思考问 题,用来帮助同学们加深认识,同时培养独立思考的能力。该门实验课软件和硬件 并重,需要有较多的知识储备,需要具有“汇编语言”、“C语言”、“计算机 组成原理”、“操作系统”等多门课程的

3、基础。另外,由于LPC2148中采用ARM7TDMI 核,所以希望同学们多阅览关于 ARM7 架构和指令集的参考资料并做好课前预 习工作。实验一 IAR环境的使用及LPC2148存储器映射项目1:使用IAR集成开发环境并创建启动项目 实验原理:IAR 公司推出的 IAR Embedded Workbench 软件包是一种专门针对嵌入式系统 应用开发的集成开发环境,其中集成了几乎所有的必须工具。利用IAR开发环境进行 嵌入式开发首先要建立一个启动项目工程,该工程中包含了初始化 ARM 的必要汇编程序(见文 件lpc2xxx_cstartup.s79),在这个启动项目工程基础上可通过添加文件、编写

4、 main 函数来完成其他实验内容。调试过程中可采用RAM和FLASH两种方式。前者在内部 RAM 中调试掉电不保存;后者在内部FLASH中调试代码,通过仿真器将代码下载到片上。 实验内容:创建一个启动项目(1) 创建新工程*Project-Create New Project 创建新工程,在 Tool chain 中选择 ARM *右键点击工程名称选择Add-Add Group,在弹出的对话框中命名Config*在工程目录下创建Config文件夹,将lpc2xxx_cstartup.s79、 LPC2148_flash.xcl、LPC2148_RAM.mac 和 LPC2148_RAM.xc

5、l 各文件拷贝其中*右键点击Config选择Add-Add Files,将Config文件夹中的 lpc2xxx_cstartup.s7文件加入*Project-0ptions:General Options-Target 选项卡中将 Device 设成 NXPLPC2148*在工程目录下新建main.c文件并添加进工程(2) 识别调试模式选择调试模式:(3) 调试模式设置:在Configurations中可添加、更改调试模式。(4) RAM 模式设置:如果用并口下载模式,在Driver中选择RDI,并在Category中RDI选项卡 中输入所用RDI驱动路径(H-JTAG安装目录下H-JTA

6、G.dll文件)。(5)FLASH模式设置:Flash loader中选择IAR安装目录下 armconfigflashloaderPhilipsFlashPhilipsLPC512K.d79。(6)输出文件设置:实验要点:阅读LPC2148_FLASH.mac及LPC2148_RAM.mac文件内容,理解两者区别。 思考:RAM及FLASH两种调试模式的区别及设置方式异同点。项目2:RAM模式和Boot模式的映射实验原理:ARM7TDMI内核基于冯?诺依曼结构,数据和指令混合编址;系统包含几个不同 的存储器组,如图1. 1 所示,图中反映了复位后从用户角度所看到的整个地址空 间映射。从图中可

7、知LPC2148具有32KB的静态RAM,可存储程序代码或数据。SRAM 支持按8位、16位和32位方式访问。另外还有主要由USB使用的8KB SRAM存储器也可 用作数据存储、代码存储和代码执行的通用RAM存储器。 存储器映射的基本概念是:每个存储器组在存储器映射中都有一个“物理上 的”位置。它是一个地址范围,该范围内可写入程序代码,每一个存储器空间的容量都永 久固定在一个位置,这样就不需要将代码设计成在不同地址范围内运行。由于ARM7处理器 上的中断向量表位于地址0x0000 0000-0x0000 003F(片上FLASH) 上,所以没次发生异常 时,CPU都从0x00000000-0x

8、0000003F地址上读取异常向量。但是为了提高存取速度(RAM 快于 FLASH),往往将FLASH中的64字节的异常向量表复制到0x4000 0000-0x4000 003F(片内 RAM)中,再把0x4000 0000-0x4000 003F范围内的存储单元地址重新映射到0x0000 0000-0x0000 003F上。这样当CPU读取0x0000 0000-0x0000 003F上的内容时,实际上是针对 地址0x40000000-0x4000003F 的操作,从而加快了存取速度。实验内容:RAM模式和Boot模式的映射查找LPC2148的存储器映射模式,从中选取用户RAM模式和Boot

9、装载程序 模式,然后在用户RAM模式下将0x4000 0000-0x4000 003F范围内的内容分两次分别用 0x11、 0xBB 填充,最后将映射模式设置成Boot模式。在线调试,并通过IAR中提供的 memory窗口观察在RAM 模式下 0x0000 0000-0x0000 003F 和 0x4000 0000-0x4000 003F 内容是 否相同,Boot模式下地址 0x0000 0000-0x0000 003F 和 0x7FFF D000-0x7FFF D03F 上的数 据是否相同。实验要点:学会通过MEMMAP寄存器设置ARM映射模式,#include后可设置MEMMAP 模式(

10、MEMMAP地址:0xE01F C040),解释实验中观察到的现象。思考:LPC2148 芯片存储器共分几部分,这么设计有什么好处。解释实验中的现象。 项目3 :异常向量表拷贝实验原理:启动用户程序时,MEMMAP=1,若用户程序需要随时更改异常向量表,需要将异 常向量表(64字节)复制片内RAM的0x40000000地址上,然后设置MEMMAP=2进行重 映射,以后就可以在SRAM中对向量表进行更改了。实验内容:将起始函数_program_start 的前 64 个字节(异常向量表)的内容拷贝到起 始地址为0x40000000的SRAM中,然后将地址映射模式改为MEMMAP=02。实验要点:

11、实验在FLASH模式下调试进行。思考:为什么该实验需要在FLASH模式下调试进行而不能在RAM模式下, 图1.1系统存储器映射A H B外设V P B外设保留地址空间B o o t 块( 12KB从片内F la sh存储器重映射 )保留地址空间8 KB片内U SBDM AR A M存储器全部512K B片内非易失性存储器3 2/64/1 28/25 6 KB片内非易失性存储器0 x000000000 x000400000 x400000000 x7FD020000 x800000000 xC00000000 xE00000000 xF00000000 xFFFFFFFF0 .0GB1 .0GB

12、2 .0GB3 .0GB3 .5GB3 .75GB4 .0GB0 x7FFFFFFF0 x7FFFD0000 x7FFFCFFF保留地址空间8 / 1 6 / 3 2 2 K B片内静态R A M存储器0 x7FD01FFF0 x7FD000000 x7FCFFFFF0 x400080000 x40007FFF保留地址空间0 x 3 F F F F F F F0 x 0 0 0 3 F F F F0 x 0 0 0 8 0 0 0 00 x 0 0 0 7 F F F F实验二:GPIO与频率控制项目1:GPIO的驱动及测试实验原理:GPI0:LPC2148有两个32位的通用I/O 口 :PO

13、RTO的32个可用引脚中P0.31 为输出引脚,P0.24未用,其余30个为输入/输出引脚;PORT1中引脚可用作 GPIO功能。慢速GPIO的驱动主要通过IOPIN、IOSET、IODIR和IOCLR四个寄存器以及PINSEL0、PINSEL1寄存器的设置来完成。IOPIN:GPIO端口引脚值寄存器,用来读取端口引脚的当前状态;IOSET:GPIO端口输出置位寄存器,写入1,对应引脚输出高电平,写入0,无 效;IODIR:GPIO端口方向控制寄存器,下入1,输出,写入0,输入;IOCLR:GPIO端口输出清零寄存器,写入1,对应引脚输出低电平并清零IOSET 相应位,写入0无效PINSEL寄

14、存器控制芯片管脚复用的具体配置,通过设置该寄存器来确定引脚 的具体功能。对于PORT0,它们的地址为:IO0PIN:0xE0028000;IO0SET:0xE0028004;IO0DIR:0xE0028008;IO0CLR:0xE002800C;PINSEL0:0xE002C000;PINSEL1:0xE002C004;PINSEL0与PINSEL1描述如表2.1和表2.2所示:实验内容:利用慢速GPIO,编写板上LED灯及蜂鸣器的驱动及测试函数。板上外部输入S5 控制LED 灯闪烁,S4控制蜂鸣器鸣叫。实验要点:P0.15为S4, P0.16为S5,P0.7为蜂鸣器;蜂鸣器由脉冲控制。需要别

15、写延迟 函数。思考:LED灯闪烁频率和蜂鸣器鸣叫频率如何控制。表2.1引脚功能选择寄存器O(PINSELO)位描述位 符号 值 功 能 复位值1:0 P0.0 00011011GPIO P0.0TxD(UART0)PWM1保留03:2 P0.1 00011011GPIO P0.1RxD(UART0)PWM3EINT005:4 P0.2 00011011GPIO P0.2SCL0(I2C0)捕获 0. O(TIMERO)保留011011GPIO P0.3SDA0(I2C0)匹配 0. O(TIMERO)EINT109:8 P0.4 00011011GPIO P0.4SCK0(SPI0)捕获 O.

16、l(TIMERO)AD0.6011:10 P0.5 00011011GPIO P0.5MISO0(SPI0)匹配 O.l(TIMERO)AD0.7O13:12 PO.6 OOO11011GPIO PO.6MOSIO(SPIO)捕获 0.2(TIMER0)保015:14 P0.7011011GPIO P0.7SSEL0(SPI0)PWM2EINT2017:16 P0.8011011GPIO P0.8TxD(UART1)PWM4保留019:18 P0.9011011GPIO P0.9RxD(UART1)PWM6EINT3021:20 P0.1001GPIO P0.10保留01011000000捕获

17、 l.O(TIMERl)保留23:22 P0.11 00011011GPIO P0.11保留捕获 l.l(TIMERl)SCL1(I2C1)025:24 P0.12 00011011GPIO P0.12保留匹配 l.O(TIMERl)保留027:26 P0.13 00011011GPIO P0.13保留匹配1.1保留029:28 P0.14 00011011GPIO P0.14保留EINT1SDA1(I2C1)031:30 P0.15 00011011GPIO P0.15保留EINT2保0表2.2引脚功能选择寄存器1(PINSEL 1)位描述位 符号 值 功 能 复位值1:0 P0.16 00

18、011011GPIO P0.16EINT0匹配 0.2(TIMER0)捕获 0.2(TIMER0)03:2 P0.17 00011011GPIO P0.17捕获 1.2(TIMER1)SCK1(SSP)匹配 1.2(TIMER1)05:4 P0.18 0001 1011GPIO P0.18痘?.3(TIMER1)MISO1(SSP)匹(TIMER1)07:6 P0.19 00011011GPIO P0.19匹配 1.2(TIMER1)MOSI1(SSP)捕获 1.2(TIMER1)09:8 P0.20 00011011GPIO P0.20匹配 1.3(TIMER1)SSEL1(SSP)EINT

19、3011:10 P0.21 00011011GPIO P0.21PWM5保留或AD1.6捕获 1.3(TIMER1)001 1011GPIO P0.22保留或AD1.7 捕获 0. O(TIMERO) 匹配 0. 0(TIMER0) 015:14 P0.23 00011011GPIO P0.23VBUS保留 保留017:16 P0.24 00011011保留 保留 保留 保留019:18 P0.25 00011011GPIO P0.25AD0.4 保留或AOUT(DAC) 保留000 OS Od 82: 620(orau) s -o sna (0MI1) g 9 舉if 乙oav62 Od O

20、ldOII01100062 Od 92:必0(orau)乙 9 pgna (0MI1) 2 9 舉ifi oav82 Od OldOII01100082 Od 比:站0II011000 LZ Od 22: %0011011GPIO P0.30AD0.3EINT3捕获 0. O(TIMERO)031:30 P0.31 00011011仅为输出端口UP_LEDCONNECT保留0项目2:锁相环PLL实验原理:PLL用于倍频输入时钟来提供CPU和相关总线的工作时钟。这里通过PLL倍 频我们得到ARM7的工作时钟FCclk和VPB总线工作时钟FPclk。PLL接受的输入频率范围为:10MHz-25MH

21、z。图 2.1 说明 PLL 与 FCclk 和 FPclk 的关系:FOSCPLLVPB分频器处理器时钟FCclkVPB时钟FPclk图2.1#1:PLL 控制寄存器*PLLCON:最新的PLL控制位保持寄存器,写入该寄存器的值在有效的PLL馈 送序列执行前不起作用。地址为:0xE01FC080。*PLLCFG:最新的PLL配置值保持寄存器,写入该寄存器的值在有效的PLL馈 送序列执行前不起作用。地址为:0xE01FC084。(4:0位:倍频值M,6:5位:分频值P) *PLLSTAT:PLL控制和配置信息的读回寄存器,如果曾对PLLCON或PLLCFG 执行了写操作,但没有产生PLL馈送序

22、列,这些值将不会反映PLL的当前状态,读取 该寄存器提供了控制PLL和PLL状态的真实值。地址为:0xE01FC088。*PLLFEED:该寄存器使能装载PLL控制和配置信息,该配置信息从PLLCON和 PLLCFG寄存器装入实际影响PLL操作的映像寄存器。地址为:0xE01FC08C。必须正确 写入PLLFEED馈送序列才能使PLLCON和PLLCFG寄存器的更改生效。馈送 序列如下:(1) 将值 0xAA 写入 PLLFEED;(2) 将值 0x55 写入 PLLFEED;#2:PLL频率的计算输出频率:O S C(2.1)其中:M是PLLCFG寄存器中MSEL倍频值;FOSC是晶振频率;

23、cclk 范围是 10MHzFmax(处理器工作最大值)。#3:工作流程*PLLCON=1/使能 PLL,但没激活 PLL;*设定PLLCFG中M、P值/倍频和分频值;*发送PLL馈送序列;/激活PLL设置;*等待PLL锁定/查询等待PLLSTAT.10位=1;*PLLCON=3/设定M和P值后,连接PLL;*发送PLL馈送序列,把M和P的值写入硬件#4:VPB寄存器*VPBDIV:控制VPB时钟速率与处理器时钟之间的关系,地址为OxEOlFClOO。 1:0 位设置如下:00:VPB 总线时钟为处理器时钟的1/401:VPB 总线时钟为处理器时钟的1/110:VPB 总线时钟为处理器时钟的1

24、/211:写入无效实验内容:利用PLL设置处理器时钟FCclk和VPB总线时钟FPclk。再编写函数取得 FCclk 和FPclk,并比较它们的值。实验要点:FOSC为 12MHz;思考:若ARM核工作频率不超过60MHz,那么在FOSC为 12000000 情况下,PLLCFG 中 M、P 的取值范围。项目3:定时器的使用实验原理:LPC2148有两个32位可编程定时/计数器。它们对外设时钟(FPclk)周期进行 计数,两 个计数器除了基地址以外,其它都相同。#1:主要控制寄存器及其描述*中断寄存器 IR:定时器 0-T0IR(0xE0004000);定时器 1-T1IR(0xE000800

25、0) IR包含4个位用于匹配中断,4个位用于捕获中断。若中断产生,IR中相 应位会置位;向IR位中写入1会复位中断,写入0无效。具体描述见表2.3。表2.3中断寄存器IR描述IR 位 功能 描述 复位值0 MR0 中断 匹配通道0 的中断标志 01 MR1 中断 匹配通道1 的中断标志 02MR2中断匹配通道2的中断标志03MR3中断匹配通道3的中断标志04CR0中断捕获通道0事件的中断标志05CR1中断捕获通道1事件的中断标志06CR2中断捕获通道2事件的中断标志07CR3中断捕裢事件的中断标志0*定时器控制寄存器TCR:定时器0-T0TCR(0xE0004004);定时器1- T1TCR(

26、0xE0008004)TCR用于控制定时器计数器的操作。为0x00时,计数器被禁止,为0x01时 计数器使能。*定时器计数器 TC:定时器 0-T0TC(0xE0004008);定时器 1-T1TC(0xE0008008) 当预分频计数器达到计数上限时,32位定时器计数器TC加1。*预分频寄存器 PR:定时器 0-T0PR(0xE000400C);定时器 1-T1PR(0xE000800C) 预分频计数器计数最大值,达到此值后TC+1且下一个时钟脉冲预分频计数器 复位。*预分频计数器寄存器PC:定时器0-T0PC(0xE0004010);定时器1- T1TCR(0xE0008010)每个FPc

27、lk周期,PC加1。*匹配寄存器 MR0-MR3:定时器 0: T0MR0-T0MR3(0xE0004018-0xE0004024); 定时器 1:T1MR0-T1MR3(0xE0008018-0xE0008024);当匹配寄存器与定时器计数值相等时自动触发相应动作:产生中断,复位定时 器计数器或停止定时器。具体执行什么动作由MCR寄存器控制。*匹配控制寄存器MCR:定时器0-T0TC(0xE0004014);定时器1-T1TC(0xE0008014)匹配控制寄存器用于控制在发生匹配时所执行的操作,功能见表2.4。 表2.4匹配控制寄存器描述MCR 位 功能 描述复位值0中断(MR0)1:MR

28、0与TC匹配产生中断;0:禁止中断 01复位(MR0)1:MR0与TC匹配使TC复位;0 :特性禁止 02 停止(MR0)1:MR0与TC匹配使TC和PC停止,TCR0清零;0:特性被禁止3中断(MR1)1:MR1与TC匹配产生中断;0:禁止中断04 复位(MR1)1:MR1与TC匹配使TC复位;0:特性禁止 05 停止(MR1)1:MR1与TC匹配使TC和PC停止,TCR0清零;0:特性被禁止06中断(MR2)1:MR2与TC匹配产生中断;0:禁止中断 07复位(MR2)1:MR2与TC匹配使TC复位;0 :特性禁止 08 停止(MR2)1:MR2与TC匹配使TC和PC停止,TCR0清零;0

29、:特性被禁止9中断(MR3)1:MR3与TC匹配产生中断;0:禁止中断10 复位(MR3)1:MR3与TC匹配使TC复位;0:特性禁止11 停止(MR3)1:MR3与TC匹配使TC和PC停止,TCR0清零;0:特性被禁止实验内容:查询方式用定时器0控制蜂鸣器每2秒响一次,用定时器1控制LED每5 秒闪烁一次。实验要点:需要根据FPclk和定时器时间间隔计算预分频值。思考:可否只用1 个定时器完成上述操作,若能,应如何操作。实验三:中断控制及UART通信项目1:ARM7TDMI中断配置实验原理:ARM7TDMI 的相量中断控制器(VIC, Vectored Interrupt Controlle

30、r)具有 32 个中断请求输入。它们分为三类:FIQ、向量IRQ(16个,具有优先级)和非向量IRQ,其 中FIQ为快速中断具有最高优先级且具有最短的等待时间IRQ产生时,如果是向量 IRQ,VIC 将该中断的服务程序地址调入VICVectAddr中,若是非向量IRQ则将 VICDefVectAddr中保存的服务程序地址调入 VICVectAddr 中;然后 ARM7 暂停当前代码执行,保护现场 后 PC 指向0x00000018 处执行,读取 VICVectAddr 寄存器的内容,然后执行中断服务函 数。当 FIQ 产生时,ARM7保护现场后,PC将指向0x0000001C,这里保存的是FI

31、Q中断服 务程序入口地址。虽然FIQ和非向量IRQ可设置成超过1个,但是由于服务程序入口地址固定 而不向向量IRQ中断地址事先分布保存,所以在FIQ和非向量IRQ的中断服务程序中必 须查询具体中断源类别,再给予相应处理。这样就造成FIQ执行效率下降,违背了 FIQ设置 的快速响应原则,因此建议FIQ只设置1个,非向量IRQ可设置多个。#1:相关寄存器VICIntSelect寄存器:32 位控制 32 个中断类型,1 代表 FIQ,0代表IRQ;地址为0xFFFFF00C。VICVectCntl015 寄存器:代表16 个中断优先级,每个寄存器的低5 位保存 中断源编号,第6位为向量中断使能。地

32、址:0xFFFFF2000xFFFFF23C。VICVectAddrO15寄存器:保存VICVectCntl对应寄存器中目标源的中断服 务程序地址。地址:0xFFFFF1000xFFFFF13C。VICDefVectAddr寄存器:保存非向量IRQ的中断服务地址。地址:0xFFFFF034。VICIntEnable寄存器: 32 位为中断源的使能位,1 代表使能,0无效。地址:0xFFFFF010。EXTINT寄存器:外部中断标志寄存器,用法:EXTINT =0x01(清除外部中断EINT0 中断标记)。地址:0xE01FC140。VICIRQStatus寄存器:32 位代表32 个中断请求状

33、态,1 代表中断使能并分配为IRQ,并且声明。地址:0xFFFFF000。VICFIQStatus寄存器:FIQ中断使能,1代表对应位中断请求并分配为FIQ。地址:0xFFFFF004。#2:VIC 操作方法*快速中断:在VICIntSelect中将中断分配为FIQ;在VICIntEnable中使能该中断;*注:FIQ中断服务程序入口地址要写入0x0000001C*向量IRQ:在VICIntSelect中将中断分配为IRQ;在VICVectCntlx中分配中断通道,并设置中断为向量中断;在VICVectAddrx中设置中断服务程序的地址;通过VICIntEnable使能外设中断。*非向量IRQ

34、:在VICDefVectAddr中设置中断服务程序的地址;通过VICIntEnable使能中断。*注:多于1 个中断时,需要在服务程序中判断具体中断源并作相应处理 #3:中断源列表表3.1连接到VIC的中断源 模块 标志 VIC 通道#WDT看门狗中断(WDINT) 0 保留给软件中断 1ARM 内核 EmbeddedICE, DbgCommRx 2ARM 内核 EmbeddedICE, DbgCommTx 3 定时器 0 匹配 0-3(MR0,MR1,MR2,MR3) 捕获 0-3(CR0, CR1,CR2,CR3)4定时器 1 匹配 0-3(MR0,MR1,MR2,MR3) 捕获 0-3(

35、CR0, CR1,CR2,CR3)5UART0 Rx 线状态(RLS)发送保持寄存器空(THRE)Rx数据可用(RDA) 字符超时指示(CTI)6UART1 Rx 线状态(RLS)发送保持寄存器空(THRE)Rx数据可用(RDA) 字符超时指示(CTI)7PWM0 匹配 0-6(MR0,MR1,MR2,MR3,MR4,MR5,MR6) 812C0 SI(状态改变)9SPI0 SPI 中断标志(SPIF)模式错误(MODF)10SPI1 TxFIFO 至少一半为空(TXRIS)RxFIFO至少一半为空(RXRIS)接收超时条件(RTRIS) 接收溢出(RORRIS)11PLL PLL 锁定(PL

36、OCK) 12RTC计数器增加(RTCCIF)报警(RTCALF)13系统控制 外部中断O(EINTO) 14外部中断l(EINTl)15外部中断2(EINT2)16外部中断3(EINT3)17A/D0 A/D 转换器0 1812C1 SI(状态改变)19BOD 掉电检测 20实验内容:分别以FIQ和非向量IRQ中断方式设置外部中断2(S6)和外部中断0(S4),各 自控制蜂鸣器鸣叫和LED灯闪烁。实验要点:在初始化 VIC 时要先调用_disable_interrupt() ;关闭中断,初始化结束后 调用_enable_interrupt();使能中断。包含头文件#include。 思考:非

37、向量中断多于一个时,中断服务程序应如何编写。项目2:通过UART0与上位机的通信实验原理:UART 用于并行输入/串行输出,将计算机内的并行数据以串行方式输出给外部 设备同时将外部发来的串行数据转换为字节供计算机内部使用。它提供了 RS-232数据 终端设备接口。#1:UART 配置*设置数据格式:由UOLCR控制串行数据格式,地址为OxEOOOCOOC,各位信息如表3.1所示: 表3.1 U0LCR 描述位 功能 描述 复位值1:0 字长度选择值000110115位字符长度6位字符长度7位字符长度8位字符长度02011个停止位2个停止位停止位选择 03 奇偶使能01禁止奇偶产生和校验使能奇偶

38、产生和校验05:4 奇偶选择00011011奇校验偶校验强制为1强制为006 间隔控制01禁止间隔发送使能间隔发送07除数所存访问位 DLAB01禁止访问除数锁存使能访问除数锁存0*波特率设置:波特率计算公式:UxDLL UxDLMFPclkbaud16 /(3.2)其中,UODLM寄存器(地址为0xE000C004)保存了对FPclk分频的高8位; U0DLL寄存器(地址为OxEOOOCOOO)保存了对FPclk分频的低8位; 欲使对除数锁存寄存器的配置生效,须先将UOLCR寄存器的最高为置1,配置 完成后置0。#2:UART 数据收发*查询方式:UARTO的接收缓存UORBR、发送缓存UO

39、THR与UODLL共用地址,地址为 0xE000C000。 当 U0LSR 的第 0 位为 1 时,代表数据已到并保存在 U0BRB 寄存器中。 当 U0LSR 的第 5 位为 1 时,代表发送寄存器已空可以发送下一字节。 *中断方式:当中断产生后,中断服务程序仅知道 UART 产生了一个中断,具体什么类型需 要查询中断标志寄存器UxIIR,依据不同中断源类型,进行不同处理。下面是UxIIR所 代表的中断源信息:UxIIR3:0=0110: “奇偶错等错误或间断”中断,从“线路状态寄存器 UxLSR”中读取状态位,分析错误原因,再处理。 UxIIR3:0=0100: “接收缓冲寄存器UxFCR

40、就绪”中断,从“接收缓冲寄存 器 UxFCR”中读取数据插入接收队列。UxIIR3:0=0010: “发送保持寄存器空UxTHR”中断,从发送队列中读取数据 写到“发送保持寄存器UxTHR”中。 UxIIR3:0=0110: “字符超时指示”中断,进行处理。注意:中断服务处理程序在处理完当前中断源类型后不能立即退出任务,而应 当继续判断 UxIIR 的最低位是否为 0,若为 0 则表示还有尚未处理的中断,需要继续 进行处理,直至UxIIR 的最低位为 1。其中U0IIR:0xE000C008,U1IIR:0xE0010008; U0FCR:0xE000C008,U1FCR:0xE0010008

41、;U0THR:0xE000C000,U1THR:0xE0010000; U0LSR:0xE000C014,U1LSR:0xE0010014;实验内容: 分别以查询方式和向量中断方式完成与上位机的通信。将上位机发来的信息回发给上位机。实验要点: 波特率设置要一致。思考: 中断方式中各种错误产生的中断的处理方法。实验4 LCD 控制与综合项目1:驱动并测试LCD显示屏实验原理:开发板上的LCD液晶显示屏采用的芯片为HD44780,它可以显示5X8和5X10 两种点阵,并带有光标指示。对外接口包括:RS、R/ W、E、DB4-DB7;内部寄存器主要 包括:IR(指令寄存器)和DR(数据寄存器)。由于

42、信号线只有DB7-DB4,所以数据信息 需分两次写入LCD 控制器,过程如图4.1 所示:IR7 IR3IR6 IR2IR5 IR1IR4 IR0BFAC6AC5AC4AC3AC2AC1AC0DR7DR6DR5DR4DR3DR2DR1DR0DB7DB6DB5DB4ER/WRS 写指令周期忙标志位BF,地址计数器读周期写数据周期图4.1 LCD 指令数据传输过程其中,忙闲标志位BF代表LCD正在执行指令,此时不能继续接收指令。因此 在向LCD发送一条指令后需要检测BF位,待其为0后继续向其传送指令或数据,也可在每 次向LCD传送信息后等待一段时间越过BF忙时间段。另外,在发送一组数据后需要E正向

43、 跳变一次将LCD激活。RS与R/ W组合所代表的LCD工作模式如下:00:写入IR指令寄存器01:读忙状态标志BF(DB7)和LCD内部地址计数器(DB0-DB6)10:写入DR数据寄存器(欲显示字符的ASCII码)11:读DR寄存器内容LCD 控制器指令如表4.1 所示:实验内容:控制LCD以5X8点阵滚动显示字符串:“Test one”,“Test two”。 实验要点:可通过EINT2中断控制,遇到EINT2中断LCD向上滚动一行。 思考:LCD 上符号的显示原理。项目2:综合实验实验原理:利用GPIO、中断控制、定时器、UART、LDC显示各模块知识,独立设计实现 综合程序。实验内容

44、(参考):通过UART(快速中断),接收上位机发来的控制命令,该命令控制蜂鸣器以特频率鸣 叫,同时利用 LCD 将蜂鸣器的鸣叫频率显示出来;通过开发板上外部中断源S4、S5(相量中断和非向量中断)获得外部输入0、1序列(按下S5代表1, S4代表0), 将该序列发回上位机。实验要点: 尽可能多地将所学知识用于实验。思考: 嵌入式软件开发与普通应用软件开发异同点。表4.1 LCD 指令指令 RSR/ WDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 功能(执泻氖保?Cleardisplay0 0 0 0 0 0 0 0 01 清屏,内部地址置0Returnhome0 0 0 0

45、0 0 0 0 1 显示位置回原点(1.52ms)Entrymode0 0 0 0 0 0 011/D S 设置光标移动方向(37us)DisplayOn/off0 0 0 0 0 01 D C B显示模式设置(37us)Cursorshift0 0 0 0 01 S/C R/L 移动光标(37us)Functionset0 0 0 01 DL N F 设置接口数据长度显示行数、字体(37us)Read BF 01 BF AC AC AC AC AC AC AC 读 BF 和内部当前地址Writedata10 Write data 写数据(37us)Readdata11 Read da ta 读数据(37us)*注:1/D=1:递增1/D=0:递减S =1:伴随显示移动S/C=1:显示移动S/C=0:光标移动R/L=1:右移R/L=0:左移DL =1:8 位;0:4 位N =1:2 行;0:1 行F =1:5X10 点阵;0:5X8 点阵BF =1:内部忙;0:闲 :任意相关文档:更多相关文档请访问:

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!