LDRB R3,=BUF2 LDRB R4,=BUF3 LDR R5,=N1 LDR R6,=N2 ADD R5,R5,R6 MOV R1,#0 BL LOOP stop MOV R0,#0x18 LDR R1,=0x20026 SWI 0x123456 LOOP CMP R5,R1 BEQ stop LDRB R0,[R2] LDRB R6,[R3] CMP R0,R6 BLS COPY1 BHI COPY2 COPY1 LDRB R0,[R2],#1 STRB R0,[R4],#1 ADD R1,R1,#1 CMP R0,#0 BEQ LOOP COPY2 LDRB R0,[R3],#1 STRB R0,[R3],#1 ADD R1,R1,#1 CMP R0,#0 BEQ LOOP AREA COPYDATA,DATA,READWRITE BUF1 DCB \ BUF2 DCB \ BUF3 DCB \ N1 DCD 8 N2 DCD 6
13
习题5
1、 什么是存储器映射?简述LPC2000系列处理器中各种资源是如何映射的?
答:将物理存储器分配到逻辑地址的过程称为存储器映射。LPC2000系列处理器中的存储器映射空间范围为:0x00000000-0xFFFFFFFF,起始地址依次为:FLASH—0x00000000,SRAM—0x40000000,BOOTBLOCK—0x7FFFE000,外部存储器0x80000000,VPB(低速外设地址)—0xE0000000,AHB—0xF0000000. 2、 什么是重映射?试分析重映射的原理与实现机制。
答:存储器重映射:将已经映射过的存储器再次映射的过程称为存储器重映射,它使同一物理存储单元映射多个不同的逻辑地址。原理:此时运用了异常向量表重映射技术,就是将Boot Block的0x7FFFE000~0x7FFFE03F,片内SRAM的0x40000000~0x4000003F及片外存储器的0x80000000~0x8000003F向量表分别重映射到0x0000~0x003F地址空间。实现机制:使用存储器映射控制机制来改变0x0000~0x003F区间的中断向量映射关系,比如LPC2000提供了一个存储映射控制寄存器MEMMAP,可以被读写,低两位为00、01、10、11时分别重映射Boot Block、片内Flash、片内SRAM和片外存储器。 3、 什么是中断?叙述中断处理过程。 答:计算机在执行正常程序过程中,当出现某种异常事件或某种外部请求时,处理器就暂停执行当前的程序,而转去执行对异常事件或某种外部请求的处理操作。当处理完毕后,CPU再返回到被暂停执行的程序,继续执行,这个过程称为中断。
中断处理过程一般包括五个步骤:中断请求,中断响应,断点保护,中断处理和中断返回。
4、 ARM7的中断类型有哪些?哪种方式最快?当有多个中断源同时向CPU发出中断申请
时,CPU依据什么来进行响应中断?
答:根据中断源的不同,中断可以分为硬件中断和软件中断。有三类:非向量IRQ中断,向量IRQ中断,FIQ中断。它们的优先级依次升高。所以FIQ中断的处理速度最快。 当多个中断源同时向CPU发出中断申请时,CPU只能按一定的次序处理相应和处理,这个响应的次序称为中断优先级。处理原则为:
⑴ 不同优先级的多个中断源同时发出中断请求,按优先级由高到低依次处理。
⑵ 低优先级中断正在处理,出现高优先级请求,应转去处理高优先级请求,服务结束后再返回原优先级较低的中断服务程序继续执行。
⑶ 高优先级中断正在处理,出现低优先级请求,可暂不响应。
⑷ 中断处理时,出现同级别请求,应在当前中断处理结束以后再处理新的请求。 5、 LPC2000系列有那些降低功耗的方法?简述空闲模式和掉电模式的区别。 答:降低功耗的方法有空闲模式和掉电模式。除了采用这两种模式外,还允许程序对某个外设进行关闭控制,可以独立的关闭应用中不需要的外设,这样进一步降低功耗。
空闲模式和掉电模式的区别:在空闲模式下,处理器停止执行指令,此时处理器,存储器,内部总线以及相关的控制器不再消耗功率,但整个系统的时钟仍然有效,外设也能在空闲模式下继续工作,并可产生中断使处理器恢复运行。然而在掉电模式下,振荡器关闭,这样芯片内部没有任何时钟。处理器状态和寄存器,外设寄存器,内部SRAM值以及引脚的逻辑电平在掉电模式下被保持。
6、 简述LPC2000系列中PLL的工作原理,说明系统时钟的配置过程。 答:PLL接受的输入时钟频率范围为10~25MHz,PLL的输出时钟信号是由电流控制振荡器(CCO)分频得到的,CCO的振荡频率由“相位频率检测”部件控制,该部件会比较输
14
出时钟信号和CCO经过M分频后信号的相位和频率,并根据误差输出不同的电流值以控制CCO的振荡频率,CCO的输出频率经过M分频后再送给“相位频率检测”部件检测以控制CCO的振荡频率,经过反复拉锯调节过程,能够使得“相位频率检测”部件的两路输入信号频率和相位逐步接近,渐渐稳定到预期的频率值上。这种反复拉锯调节过程称为PLL锁定过程,输出频率稳定后即“锁定”成功。 其配置过程:
1.选择处理器的操作频率,选择振荡器的频率,计算M值和P值;
2.配置PLLCON使能但不连接的PLL的模式,根据P和M的值配置PLLCFG寄存器,发送PLL馈送序列,然后等待PLL锁定或中断; 3.连接PLL,发送PLL馈送序列。
7、 简述LPC2000系列芯片内部向量中断控制器(VIC)的功能特点,如果定时器0作为
一个向量中断源,需要对VIC进行哪些配置?简述向量处理过程。
答:向量中断控制器(VIC)负责管理芯片的中断源,最多可管理32个中断输入请求,16个向量IRQ中断和1个非向量中断,16个优先级可动态分配给中断请求,可产生软中断。VIC为每一个中断分配中断通道号,通道号就是每一种中断源的唯一标识,中断到来时,根据VIC通道号就能确定中断源。
1.配置中断选择寄存器VICIntSelect,中断通道4分配为IRQ中断; 2.配置寄存器VICVectAddr0,确定定时器0中断的服务程序地址;
3.配置寄存器VICVectCntl0,向量IRQ通道0控制寄存器位分配位数值; 4.配置中断时能寄存器,使能中断。
8、 FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同? 答:快速中断请求FIQ要求具有最高优先级。
向量IRQ具有中等优先级,该级别可分配32个请求中的16个,32个请求中的任意一个都可分配到16个向量IRQ slot中的任意一个,其中slot()具有最高优先级,而slot15则为最低优先级。
非向量IRQ的优先级最低。
习题6
1. 简述LPC2000系列芯片的引脚设置寄存器PINSEL0、PINSEL1、PINSEL2的具体功
能。
答:这三个寄存器的主要功能是实现对引脚的功能选择。具体来说PINSEL0和PINSEL1可以配置P0口(P0.0~P0.31)的功能,PINSEL2寄存器用来配置P1.0~P1.16引脚的功能。PINSELx的连个比特位可配置一个引脚的功能,比如以PINSEL[1:0]两个比特位的00、01、10可以配置P0.0为GPIO、TxD(UART0)、PWM1,11保留。
2. 简要描述LPC2000系列芯片内部GPIO的功能特点?举例说明GPIO输入和输出的应
用。
答:GPIO(General Purpose Input/Output ports,通用输入输出接口)是用于二进制数据的输入和输出。芯片的某个引脚通过MUX1功能选择,对应PINSELx寄存器选择器功能。如果选择该引脚为GPIO那,再经MUX2中的IOxDIR对应位选择控制管脚的输入和输出方向,GPIO管脚为输入时通过IOxPIN寄存器读入,GPIO为输出时通过IOxSET和IOxCLR寄存器控制输出,实现对对应GPIO管脚的控制。
当引脚设置为GPIO输出模式时,使用IOxSET寄存器设置其从引脚输出高电平,向某
15
位写入1是对应引脚输出高电平,写入0无效;使用IOxCLR寄存器设置从引脚输出低电平,向某位写入0是对应引脚输出低电平。GPIO输入用于向ARM核中读入数据,GPIO输出用于输出数据。
3. LPC2000系列芯片外部中断有几种触发方式?【例6.7】中外部中断修改为EINT1,P0.5
输出控制LED,试编程实现。
答:外部中断有两类四种触发方式:边沿触发(上升沿触发或者下降沿触发),电平触发(高电平触发或低电平触发)。编程实现的代码如下 : #include \ #difine LED 1<<5 //设置P0.5控制LED,高电平LED点亮 void__irq URQ_Eint1(void) { uint32 i; i = IO0SET; // 读取LED控制值 if((i&LED)==0) IO0SET = LED; // 点亮LED else IO0CLR = LED; // 熄灭LED WHILE((EXTINT &0x02) != 0) //等待EINT1恢复为高电平 { EXTINT = 0x02; // 清除EINT1中断标志 } VICVectAddr = 0; // 向量中断结束 } int main(void) { PINSEL0 = 0x000000C0; //设置P0.3为EINT0 IO0DIR = LED; // 设置P0.5引脚为输出 EXTMODE = 0x00; // 设置EINT1为电平触发 EXTPOLAR = 0x00; // 极性寄存器-低电平有效 IO0CLR = LED; // 设置LED初态为熄灭 VICIntSelect = 0x00000000; // 设置中断类型为IRQ中断 VICDefVECAddr = (int )IRQ_Eint1; // 装载中断服务程序地址 EXTINT = 0x02; // 清除EINT1中断标志 VICIntEnable = 1<<15 //使能EINT1 while(1); //等待中断 return 0; } 4. 简述LPC2000系列芯片内部定时器的内部由哪些模块构成?各模块完成功能是什么? 答:定时器内部由三部分组成:分频与计数模块、匹配控制模块和捕获控制模块。 分频计数模块:属于基本模块,提供每个定时器捕获匹配的基本时钟,属于定时器的公共部分,可对外部接入时钟进行预分频。
16

