收藏 分享(赏)

第4章 LPC2000系列ARM硬件结构(5~9).ppt

上传人:sjmd695 文档编号:7902173 上传时间:2019-05-29 格式:PPT 页数:82 大小:1.49MB
下载 相关 举报
第4章  LPC2000系列ARM硬件结构(5~9).ppt_第1页
第1页 / 共82页
第4章  LPC2000系列ARM硬件结构(5~9).ppt_第2页
第2页 / 共82页
第4章  LPC2000系列ARM硬件结构(5~9).ppt_第3页
第3页 / 共82页
第4章  LPC2000系列ARM硬件结构(5~9).ppt_第4页
第4页 / 共82页
第4章  LPC2000系列ARM硬件结构(5~9).ppt_第5页
第5页 / 共82页
点击查看更多>>
资源描述

1、1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8. GPIO,LPC2000系列ARM硬件结构,9. 向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12. SPI接口 13. I2C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟,4.5 存储器加速模块(MAM),概述,LPC2000微控制器扩展了器件内部Flash总线宽度为128位,用于提高处理器的指令执行速度。这个接口通过存储器加速模块(MAM

2、)来控制。,MAM内部结构,LPC2200系列芯片把Flash存储器被分成两组,它们轮番工作,及时的为CPU提供需要的指令和数据,以防止CPU取指暂停。每组Flash存储器都有自己的预取指缓冲区、分支跟踪缓冲区和数据缓冲区。,3,1,2,4,关闭MAM指令执行情况,所有存储器操作请求都会直接对Flash操作,由此产生了CPU停止,等待若干周期的情况。,开启MAM指令执行情况,只要指令存在两个组的指令缓存区中,CPU的指令执行是连续的,由此大大提高了指令执行效率。,4.5 存储器加速模块(MAM),程序顺序执行,每个128位值包括了4个32位ARM指令或8个16位Thumb指令。在连续执行代码时

3、,通常一个Flash组包含当前正在取指的指令和包含该指令的整个Flash行,而另一个Flash组则包含或正在预取指下一个连续的代码行。,4.5 存储器加速模块(MAM),程序出现分支,在预取指缓存区中保存着将要执行的指令,在分支跟踪缓存区中保存着程序跳转后可执行到的指令。,4.5 存储器加速模块(MAM),程序获取数据,当CPU在从Flash中获取数据时,如果这些数据没有出现在MAM的数据缓冲区中,那么MAM会执行一次Flash读操作,并把一个128位的数据行存入数据缓冲区,这样就加快了按顺序访问数据的速度。数据访问使用一个单行的缓冲区,和访问代码时提供两个缓冲区不同,因为数据访问不需要预取指

4、功能。,4.5 存储器加速模块(MAM),MAM与Flash编程,Flash编程功能不受存储器加速器模块的控制,而是作为一个独立的功能进行处理。Flash存储器的布线使其每个扇区同时存在于两个组当中,这样扇区擦除操作可同时对两个组执行。,4.5 存储器加速模块(MAM),MAM的操作模式,LPC2000系列芯片允许用户设置MAM的加速级别,使芯片适用于某些对功耗和可预测性有要求的场合。MAM定义了三种操作模式:,4.5 存储器加速模块(MAM),MAM的配置,在复位后,MAM默认为禁止状态。软件可以随时将存储器访问加速打开或关闭。通常我们都会把加速设置为完全使能,这可使程序以最高速度运行。而运

5、行某些要求更精确定时的代码时,我们可以关闭或部分使能MAM,以较慢但可预测的速度运行代码。,4.5 存储器加速模块(MAM),寄存器描述,MAM控制寄存器(MAMCR):,MAMCR1:0:用于MAM的模式控制,具体关系如下表。,MAM定时寄存器(MAMTIM):,MAMTIM2:0:决定使用多少个CCLK周期访问Flash存储器,这样可以调整MAM时序使其匹配处理器操作频率,具体关系如下表。,当访问周期设置为1个CCLk时,实际上关闭了MAM,但是仍可以选择MAM模式对功耗进行优化。 注意:不正确的设定会导致器件的错误操作,4.5 存储器加速模块(MAM),MAM使用注意事项,MAM定时问题

6、:在改变MAM定时值时必须先关闭MAM。其设置的定时值和系统时钟有如下关系,目的是为了确保Flash的访问周期不会小于50ns ,否则会导致操作错误。,Flash编程问题:在编程和擦除操作过程中不允许访问Flash存储器。为了防止从Flash存储器中读取无效的数据,在Flash编程或擦除操作开始后MAM将不缓冲任何数据。所以在Flash操作结束后,任何对Flash地址的读操作都将启动新的取指操作。,4.5 存储器加速模块(MAM),MAM应用示例,void MAMSet(uint32 Fcclk) MAMCR = 0; If(Fcclk 200000000) MAMTIM = 1;elseif

7、(Fcclk 40000000) MAMTIM = 2;elseMAMTIM = 3; MAMCR = 2; ,MAM部件Flash访问时钟的配置:,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8. GPIO,LPC2000系列ARM硬件结构,9. 向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12. SPI接口 13. I2C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟,4.6 外部存储器控

8、制器(EMC),概述,外部存储器控制器是AMBA AHB总线上的一个从模块,它为AMBA AHB系统总线和外部(片外)存储器器件提供了一个接口。,该模块可同时支持多达4个单独配置的存储器组,每个存储器组都支持SRAM、ROM、Flash EPROM、Burst ROM存储器或一些外部I/O器件。,注:每个存储器组的总线宽度为8、16或32位,但是同一个存储器组不要使用两个不同宽度的器件。,4.6 外部存储器控制器(EMC),特性,支持静态存储器映射器件; 4个存储器组(Bank0 Bank3)可单独配置,每个存储器组可访问16M字节空间; 总线空闲周期可编程; 可对静态RAM器件的读写等待时间

9、进行编程; 可编程外部数据总线宽度8位、16位和32位。,4.6 外部存储器控制器(EMC),引脚描述,注:每个这些引脚是与P1、P2和P3口GPIO功能复用,所以在使用外部总线前首先要正确配置PINSEL2寄存器 。,4.6 外部存储器控制器(EMC),寄存器描述,外部存储器控制器包含4个配置寄存器。每个配置寄存器控制一个外部存储器接口的总线空闲时间、读访问长度、写访问长度、存储器组是否写保护、存储器组的总线宽度的设置等。,4.6 外部存储器控制器(EMC),寄存器描述,IDCY,WST1,IDCY:总线空闲时间控制位。该位控制着一个存储器内部的读写访问之间,以及访问一个存储器组和访问另一个

10、存储器组之间EMC需要给定的“空闲”CCLK周期最小数目,以避免器件间的总线竞争。计算公式为:空闲CCLK周期数 IDCY +1;,存储器组配置寄存器03(BCFG03):,WST1:读写访问长度控制位。该位控制读访问的长度(对Burst ROM的连续读访问除外),以调节对外部存储器的读访问时间。读访问的长度以CCLK周期来计量。 计算公式为:读操作周期长度 WST1 + 3;,WST1=0 1个等待周期,外部存储器读访问波形(WST1=0):,增加1个等待周期,外部存储器读访问波形(WST1=1):,WST1=1,2个等待周期,4.6 外部存储器控制器(EMC),寄存器描述,RBLE,存储器

11、组配置寄存器03(BCFG03):,RBLE:字节定位使能位。在LPC2200微处理器中,EMC提供了一组字节定位选择信号(BLS0BLS3)实现对16位或32位外部存储器组的字节操作。设定RBLE可实现: 写访问时,RBLE位决定WE信号是否有效(低电平有效); 读访问时,RBLE位决定BLSn信号是否有效(低电平有效)。,RBLE位对总线信号的影响:,4.6 外部存储器控制器(EMC),LPC2200读外部总线器件,LPC2200写外部总线器件,4.6 外部存储器控制器(EMC),寄存器描述,WST2,存储器组配置寄存器03(BCFG03):,WST2:写访问长度控制位。和读操作类似,该位

12、控制写访问的长度(对Burst ROM的连续读访问除外),以调节对外部存储器的写访问时间。写访问的长度以CCLK周期来计量。 计算公式为:写操作周期长度 WST2 + 3; 对于Burst ROM,计算公式为:写操作周期长度 WST2 + 1;,外部存储器写访问波形(WST2=0):,外部存储器写访问波形(WST2=1):,增加1个等待周期,4.6 外部存储器控制器(EMC),寄存器描述,MW,存储器组配置寄存器03(BCFG03):,MW:该位控制相应存储器组的数据总线宽度。,4.6 外部存储器控制器(EMC),寄存器描述,MW控制域(BCFG29:28)与引脚BOOT1:0的关系:,由于B

13、ank0可用于引导程序运行,所以BCFG029:28的复位值与引脚BOOT1:0的设定有关(当BOOT1:0=11时,复位后从片内Flash引导程序运行)。,4.6 外部存储器控制器(EMC),外部存储器接口,LPC2200的外部存储器宽度可设定为8位、16位和32位模式,每一种模式对应的硬件连接都是不同的,原因就是在总线工作模式上存在差别。,4.6 外部存储器控制器(EMC),8位总线宽度,数据总线D7D0有效,字节定位信号中只有BLS0是有效的,总线的工作模式 如表。,说明:1、如果此时使用BLS0作为存储芯片的写使能信号,那么在执行读取操作时,存储芯片上的读、写使能信号就会同时有效。,说

14、明:2、此时对存储芯片进行写操作时,WE信号会一直处于无效状态,因此不能用WE作为存储芯片的片选信号。,4.6 外部存储器控制器(EMC),8位总线宽度连接方式,4.6 外部存储器控制器(EMC),16位总线宽度,数据总线D15D0有效,地址总线A0无效,字节定位信号中BLS0和BLS1有效。,LPC2200操作16位存储器时,需将LPC2200的地址线A1连接到存储器地址线A0处。,总线工作模式如表。,16位存储器件中,高、低字节定位表示方法:,4.6 外部存储器控制器(EMC),16位总线宽度连接方式,4.6 外部存储器控制器(EMC),16位总线操作示例,LPC2000与存储芯片MT45

15、W4MW16 的连接示意图。MT45W4MW16是一款PSRAM芯片,16位总线宽度,容量8M字节 。,RBLE = 1,4.6 外部存储器控制器(EMC),向PSRAM中写入16位数据,uint16 *point16; uint16 data16 = 0x00; point16 = (uint16 *)0x80001020; while(1) *point16 = data16+; ,向PSRAM中0x80001020地址循环写入从0开始递增的数据。,使用逻辑分析仪捕捉到前4次操作的波形。,4.6 外部存储器控制器(EMC),向PSRAM中低字节地址写入8位数据,uint8 *point8;

16、 uint8 data8 = 0x00; point8 = (uint8 *) 0x80001010; while(1) * point8 = data8 +; ,向PSRAM中低字节地址0x8 0001010循环写入从0开始递增的8位数据。,WE、BLS0有效,数据线上D7D0有效,D15D8无效,4.6 外部存储器控制器(EMC),向PSRAM中高字节地址写入8位数据,uint8 *point8; uint8 data8 = 0x00; point8 = (uint8 *) 0x80001011; while(1) * point8 = data8 +; ,向PSRAM中高字节地址0x8

17、0001011循环写入从0开始递增的8位数据。,WE、BLS1有效,数据线上D15D8有效,D7D0无效,4.6 外部存储器控制器(EMC),1、写入16位数据时,EMC将16位数据输出到D15:0,同时使BLS0和BLS1均有效;2、向“低字节地址”处写入8位数据时,EMC将8位数据输出到D7:0,同时使BLS0输出有效,BLS1输出无效;3、向“高字节地址”处写入8位数据时,EMC将8位数据输出到D15:8,同时使BLS1输出有效,BLS0输出无效。,16位写操作总结,4.6 外部存储器控制器(EMC),从PSRAM中读取8位数据,uint8 RcvData8; uint8 *point8

18、; point8 = (uint8 *) 0x80001010; while(1) RcvData8 = * point8+; RcvData8 = * point8+; RcvData8 = * point8+; RcvData8 = * point8-; point8-; point8-; ,从PSRAM 0x8000 1010 0x8000 1013循环读取8位数据,读取16位数据时,BLS0和BLS1均有效,有效数据位于:D15:0;读取“低字节”数据时,BLS0和BLS1均有效,有效数据位于:D7:0;读取“高字节”数据时,BLS0和BLS1均有效,有效数据位于:D15:8。,4.6

19、 外部存储器控制器(EMC),32位总线宽度,数据总线D31D0有效,地址总线A1、A0无效,字节定位信号中BLS0BLS3有效。 32位存储器件中字节0、1、2、3的定位表示法:,LPC2200操作32位存储器时,需将LPC2200的地址线A2连接到存储器地址线A0处。,4.6 外部存储器控制器(EMC),32位总线宽度连接方式,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8. GPIO,LPC2000系列ARM硬件结构,9. 向量中断控制器 10.外部中断输入 11.定时器0和

20、定时器1 12. SPI接口 13. I2C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟,4.7 引脚连接模块,概述,LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。,01,10,11,P0.0默认为GPIO功能,P0.0选择TXD0功能,配置对应位为01,P0.0选择PWM1功能,配置对应位为10,P0.0选择保留功能,配置对应位为11,4.7 引脚连接模块,LPC2000系列微控制器具有三个32位宽度PI

21、NSEL寄存器,其中PINSEL0和PINSEL1控制端口0,PINSEL2根据芯片的不同控制的端口数量也不同 。,寄存器描述,PINSEL2寄存器与外部总线,PINSEL25:4与数据总线和控制线的关系列表,PINSEL227:25与地址线的关系列表,4.7 引脚连接模块,4.7 引脚连接模块,应用示例,PINSEL0 = 0x05 16;,要求将P0.8、P0.9设置为TxD1、RxD1通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL019:16,当该域设置为0101 (0x05)时选择 RxD1和 TxD1。,为了不影响别的管脚连接设置,通常选择下面的设置方

22、法。,PINSEL0 = (PINSEL0 ,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8. GPIO,LPC2000系列ARM硬件结构,9. 向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12. SPI接口 13. I2C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟,4.8 GPIO,引脚描述,LPC2114/2124微控制器具有两个端口P0和P1,可以作为GPIO使用的引脚数为46个。L

23、PC2210/2212/2214微控制器还包含另外两个端口P2和P3,这个两个端口与外部存储器总线复用,当它们全部作为GPIO使用时,GPIO引脚数多达112个。这些GPIO有如下特点: 可以独立控制每个GPIO口的方向; 可以独立设置每个GPIO口的输出状态; 所有GPIO口在复位后默认为GPIO且为输入状态;,GPIO与控制寄存器的关系,引脚,GPIO相关寄存器描述,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxPIN,该寄存器反映了当前引脚的状态。IOxPIN中的x对应于某一个端口,如P1口对应于IO1PIN。所

24、以芯片存在多少个端口,就有多少个IOxPIN分别与之对应。写该寄存器会将值保存到输出寄存器,具体使用稍后介绍。 注意:无论引脚被设置为输入还是输出模式,都不影响引脚状态的读出。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxDIR,当引脚设置为GPIO输出模式时,可使用该寄存器控制引脚的方向。向某位写入1使对应引脚作为输出功能,写入0时作为输入功能。作为输入功能时,引脚处于高阻态。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxSET,当引脚设

25、置为GPIO输出模式时,可使用该寄存器从引脚输出高电平。向某位写入1使对应引脚输出高电平。写入0无效。从该寄存器读回的数据为GPIO输出寄存器的值。该值不反映外部环境对引脚的影响。,PINSELx,IOxDIR,IOxCLR,IOxPIN,IOxSET,in,out,1,0,GPIO相关寄存器描述IOxCLR,当引脚设置为GPIO输出模式时,可使用该寄存器从引脚输出低电平。向某位写入1使对应引脚输出低电平。写入0无效。 注意:读取该寄存器无效,不能读回输出寄存器的值。,4.8 GPIO,使用GPIO注意要点,引脚设置为输出方式时,输出状态由IOxSET和IOxCLR中最后操作的寄存器决定; 大

26、部分GPIO输出为推挽方式(个别引脚为开漏输出),正常拉出/灌入电流均为4mA(短时间极限值40mA); 复位后默认所有GPIO为输入模式。,.PINSEL0 .,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例设置P0.0输出高电平,P0.0,.uint32 PinStat;PINSEL0 .,C代码:,PINSEL0,IO0DIR,IO0CLR,IO0PIN,IO0SET,in,out,1,0,GPIO应用示例读取P0.0引脚状态,P0.0,IO0PIN,#define DataBus 0xFFPINSEL0 .,使用

27、IOxSET和IOxCLR实现:,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将8位无符号整形变量Data的值输出到P0.0P0.7。,数据输出线:,#define DataBus 0xFFPINSEL0 .,GPIO应用示例输出多位数据至IO口,在需要将多位数据同时输出到某几个IO口线时,通常使用IOxSET和IOxCLR来实现,在某些情况下也可以使用IOxPIN寄存器实现。后者可以在多个IO口上直接输出0和1电平。本例将

28、8位无符号整数变量Data的值输出到P0.0P0.7。,使用IOxPIN实现:,数据输出线:,1.LPC2000系列简介 2.引脚描述 3.存储器寻址 4.系统控制模块 5.存储器加速模块 (MAM) 6.外部存储器控制器(EMC) 7.引脚连接模块 8. GPIO,LPC2000系列ARM硬件结构,9. 向量中断控制器 10.外部中断输入 11.定时器0和定时器1 12. SPI接口 13. I2C接口 14. UART(0、1) 15. A/D转换器 16. 看门狗 17. 脉宽调制器(PWM) 18. 实时时钟,4.9 向量中断控制器,概述,ARM7TDMI内核具有两个中断输入,分别为I

29、RQ中断和FIQ中断。向量中断控制器(VIC)负责管理芯片的中断源,最多可以管理32个中断输入请求。,CPU 内核 ARM7TDMI-S,4.9 向量中断控制器,程序状态寄存器CPSR与VIC的关系,ARM内核通过CPSR来监视和控制内部的操作,CPSR中的“I”位和“F”位分别用来控制IRQ模式和FIQ模式的使能。,CPU,ARM7TDMI-S,VIC,IRQ,FIQ,CPSR 7 (I),CPSR 6 (F),4.9 向量中断控制器,程序状态寄存器CPSR与VIC的关系,当I = 1时,禁止IRQ中断,当I = 0时,使能IRQ中断,4.9 向量中断控制器,程序状态寄存器CPSR与VIC的

30、关系,当F = 1时,禁止FIQ中断,当F = 0时,使能FIQ中断,4.9 向量中断控制器,中断分类,中断输入请求可以在VIC中被设置为以下三类:FIQ中断:具有最高优先级;向量IRQ中断:具有中等优先级;非向量IRQ中断:具有最低优先级;,4.9 向量中断控制器,FIQ中断硬件处理流程,将当前的程序状态寄存器的内容备份 即,SPSR_fiq = CPSR,处理器切换到FIQ模式,禁止IRQ和FIQ中断,即,I = F = 1,保存返回地址 LR_fiq = PC,设置FIQ异常入口地址 PC = 0x1C,发生FIQ异常事件,说明:ARM7不支持FIQ中断嵌套,4.9 向量中断控制器,IR

31、Q中断相应流程,将当前的程序状态寄存器的内容备份 即,SPSR_irq = CPSR,处理器切换到IRQ模式,禁止IRQ中断,即,I = 1,保存返回地址 LR_irq = PC,设置IRQ异常入口地址 PC = 0x18,发生IRQ异常事件,说明:ARM7不支持IRQ中断嵌套,寄存器描述控制寄存器,控制寄存器功能描述,4.9 向量中断控制器,寄存器描述参数设置寄存器,IRQ中断特点,4.9 向量中断控制器,IRQ中断相关寄存器,4.9 向量中断控制器,注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。,产生中断后的服务程

32、序地址,4.9 向量中断控制器,寄存器描述状态寄存器,注意:读取VICRawIntr寄存器将得到所有32个中断请求和软件中断的状态,它不管中断是否使能或分类 。,保护使能寄存器,4.9 向量中断控制器,保护使能寄存器(VICProtection ):,在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。,FIQ中断处理,4.9 向量中断控制器,SUBS PC, LR, #4,IRQ中断处理,4.9 向量中断控制器,硬件处理,软件处理,IRQ中断处理,4.9 向量中断控制器,软件处理,IRQ中断处理,4.9 向量中断控制器,SUBS PC, LR, #4,IRQ中断的设计实

33、例,将定时器0中断分配为向量IRQ通道0,中断服务程序地址设置为Timer0_ISR。,C代码:,步骤:,IRQ通道0控制寄存器 VICVectCntl0,向量IRQ通道0控制寄存器位分配,位,数值,图示IRQ中断的发生过程,1.正在执行用户程序;,2.外部中断0发生中断;,3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器;,4.程序跳转至异常向量表中IRQ入口0x0018处;,5.执行指令跳转至VICVectAddr寄存器中的中断服务地址;,6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。,图示IRQ中断的发生过程,IRQ_Eint0,注意:任何IRQ中断

34、产生之后,微控制器跳转到地址0x18执行代码,该地址处的指令为:LDR PC, PC, #-0xff0 在执行该指令时,PC指向当前指令后的第2条指令,即地址0x20。该指令将内存地址:0x20-0xFF0 0xFFFFF030 处的内容存入PC,该地址正是 VICVectAddr寄存器的地址。所以一条ARM指令即可实现程序向中断服务程序的跳转。,使用VIC的注意要点,4.9 向量中断控制器,如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式; 将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源; ADS1.2规定在定义中断服务函

35、数时必须加入关键字“_irq”,保证函数返回时会切换处理器模式; 在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。,VIC相关启动代码分析,. /* 初始化VIC */ VICIntEnClr = 0xffffffff; VICVectAddr = 0; VICIntSelect = 0; .,在LPC2100、LPC2200的启动代码中包含有VIC初始化程序,默认是禁止所有中断。,TargetResetInit函数:,InitStack.MSR CPSR_c,#0xdfLDR SP,=StackUsrMOV PC,R0,在LPC2100

36、、 LPC2200的启动代码中默认是关闭IRQ和FIQ中断的。如果用户需要使用这两个中断,则要设置CPSR寄存器的I位或F位,这需要在特权模式下处理。最简单的方法是在启动代码中设置(修改0xdf值)。,处理器各模式堆栈设置:,VIC相关启动代码分析,CODE32AREA vectors,CODE,READONLYENTRY ResetLDR PC, ResetAddrLDR PC, UndefinedAddr. . .DCD 0xb9205f80LDR PC, PC, #-0xff0LDR PC, FIQ_AddrResetAddr DCD ResetInit UndefinedAddr DCD Undefined . . . Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,异常向量表:,一旦产生IRQ中断,微控制器切换到IRQ模式,并跳转到向量表0x0018地址执行指令。,一旦产生FIQ中断,微控制器切换到FIQ模式,并跳转到向量表0x001C地址执行指令,然后跳转到FIQ_Handler代码段。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报