第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块

Slides:



Advertisements
Similar presentations
《单片机原理及应用》 《微型计算机原理及接口技术 》 授课专业:测控13级 授课学时: 78 学时 理论教学:52学 实验教学:26学时
Advertisements

第五章 输入输出系统 5.1 概述 5.3 接口 5.3 系统总线 5.4 直接程序传送方式接口 5.5 中断方式与接口
单片机应用技术 彭选荣
嵌入式系统与单片机 北京科技大学电子信息系.
NEUSOFT Institute of information Technology .ChengDu
第二章 嵌入式处理器.
軍用電腦科技趨勢與產業應用 全科科技 陳以昌.
PSoC® 4 BLE新产品 介绍 PSoC = 可编程片上系统 BLE = 蓝牙低功耗
第5章 多级结构的存储系统 5.1 三级结构存储系统概述 主存储器 虚拟存储器 CPU 高速缓存 三级结构的存储系统.
第三章 计算机系统 的组成与工作原理 本章学习目标 理解模型机的结构及工作过程 掌握单片机的结构 掌握单片机I/O口的使用
北京市科普项目社会征集指南及 项目建议方案解读
直流电机调速监督控制系统 主讲:杨林 Page  1.
第五章 中央处理单元.
合肥工业大学-TI单片机联合实验室(MSP430 & Cortex-M)
微机原理与接口技术 第二章 ARM微处理器硬件结构
半导体存储器 第四章 半导体存储器.
序列埠通訊.
协议宏串行通信 陈建瓴.
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
題目:LED電子數位時鐘 第 二組 組員: 陳柏霖 李育昇.
第四章 BootLoader开发 附-s3c2410/s3c2440处理器介绍
單晶片MCS-51 C語言入門實習 第1章 微電腦與單晶片MCS-51架構 作者:董勝源.
1个USB Host 1.1端口:可支持U盘存储器(读取客户程序自动下载) 1个USB Device 2.0端口:支持USB程序下载
第7章 常用数字接口电路.
(建议使用Office2003以上版本播放,将有更丰富的动画效果)
ARM存储器结构 ARM架构的处理器的存储器寻址空间有4G字节 ,存储空间可以分为 :
第9章 串行扩展技术 (课时:6学时).
第7章 单片机系统的串行扩展 西安思源学院 电子信息工程学院 1.
第8章 AT89S52单片机外部 存储器的扩展 1.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
S3c2410电路设计(以北京博创s3c2410-s实验箱为例讲解)
第五章 存储系统 半导体存储器概述 系统内存扩充 高速缓冲存储器 虚拟存储器 PC系列机中的主存储器 习题与思考 上一章 目 录 帮助
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
Block diagram BB —逻辑 —音频 —电源管理 HW interface. Block diagram BB —逻辑 —音频 —电源管理 HW interface.
第5章 智能汽车设计基础—微控制器.
College of Computer Science & Technology
怎样从0开始写bootloader? 李明 北京亚嵌教育研究中心
《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:
第四章 BootLoader开发 附-s3c2410/s3c2440中断控制器介绍
第15章 串行通信及接口电路.
嵌入式系统设计与实例开发 ——ARM与C/OS-Ⅱ 第六讲 基于ARM的嵌入式硬件结构设计.
第2章 单片机的结构原理与 简单应用 (课时:10学时).
串行通讯的概念 串行通讯:一条信息的各位数据被逐位按顺序传送 的通讯方式称为串行通讯。
第五章 C/C++及汇编语言的混合编程 5.1 ARM C/C++编译器 5.2 在C/C++程序中内嵌汇编指令
(第2版).
智慧電子應用設計導論(1/3) Wireless
第一章 微型计算机基础知识.
第二章 单片机基础知识.
(第2版).
ARM及Thumb指令集 (练习).
第6章 半导体存储器和可编程逻辑器件 6.1 概述 6.2 ROM(只读存储器) 6.3 RAM (随机存取存储器)
第3章 ARM微處理器的指令集.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/18.
第6章 存储器接口 6.1 存储器概述 6.2 半导体存储器 6.3 MCS-51单片机存储器扩展.
ARM指令集 Author : Steve Furber Advisor: Mei-Ling Chiang Speaker: 徐翔宇
第1章 可编程控制器的硬件 构成及工作原理 1.1 可编程控制器的硬件构成 1.2 可编程控制器的工作原理.
嵌入式系统教案 武汉创维特信息技术有限公司 2019/4/29.
键盘 LCD显示器 触摸屏技术 串行总线数据通信 PTR2000无线数据传输
四川工商学院 单片机原理及应用 刘 强
课件下载地址: 周立功网站: 在首页搜索“课件”即可。 注意:请使用PowerPoint2003播放。
第五章 输入/输出系统 本章讨论: 接口的基本概念 总线的基本概念 中断方式及其接口组成 中断方式及其接口组成 DMA方式及其接口组成
第三章 计算机系统的组成与工作原理.
ARM简介及BootLoader介绍 黄大荣
第十一章 使用Wii搖桿控制機械手臂 認識伺服馬達 認識I2C通訊介面 透過I2C介面串連兩個Arduino板 讀取Wii左手把的資料
微處理機 Microprocessor (100上) ARM 內核嵌入式SOC原理
单片机应用技术 (C语言版) 第8章 串行通信接口
单片机原理及应用 (C语言版) 第8章 单片机系统扩展
第1章 单片机及其开发环境 教学内容 初识单片机 单片机应用系统 Keil µVision软件的使用.
第3章 目录 1.简介 2.ARM7TDMI 3.ARM7TDMI的模块和内部框图 4.体系结构直接支持的数据类型 5.处理器状态
Presentation transcript:

第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO 10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗

5.5 存储器加速模块(MAM) 概述 LPC2114/2124/2210/2212/2214微控制器的ARM内核工作在最高频率60MHz时,执行一条指令约为17ns。而Flash存储器的访问周期需要50ns,即最高频率20MHz。所以如果将代码存放在Flash中,将影响ARM内核发挥最大效能。为了能将指令从内部Flash存储器更高效快速地提取到ARM内核,而设计产生了一个存储器加速模块(MAM)。

MAM结构 使能MAM模块后,ARM内核将通过MAM模块访问Flash存储器。 总线 接口 Flash 存储器组0 存储器组1 总线 接口 分支跟踪缓存 总线 接口 Flash 存储器组0 存储器组1 预取指缓存 数据缓存区 选择 ARM局部总线 2×128位 总线 接口 Flash 存储器组0 存储器组1 分支跟踪缓存 预取指缓存 数据缓存区 选择

MAM结构 使能MAM模块后,ARM内核将通过MAM模块访问Flash存储器。 总线 接口 Flash 存储器组0 存储器组1 分支跟踪缓存 总线 接口 Flash 存储器组0 存储器组1 预取指缓存 数据缓存区 选择 ARM局部总线 2×128位 MAM模块中的数据总线宽度为128位,所以一次读取操作可以读出4条ARM指令或8条Thumb指令。 分支跟踪缓存 预取指缓存 Flash 存储器组0 分支跟踪缓存 预取指缓存 Flash 存储器组1 分支跟踪缓存 预取指缓存 Flash存储器被分为两组,当CPU执行其中一组Flash内的指令时,另一组进行读取缓存操作。 每个Flash组包含预取指缓存和分支跟踪缓存。

MAM结构 预取指缓存区保存有将要执行的指令。而分支跟踪缓存区保存有程序跳转后可能执行到的指令。 总线 接口 Flash 存储器组0 存储器组1 当程序向前跳转时,尝试从预取指缓存区取指。 ARM局部总线 当程序向后跳转时,尝试从分支跟踪缓存区取指。 预取指缓存 预取指缓存 分支跟踪缓存 分支跟踪缓存 2×128位 2×128位 如果程序跳转出缓存的范围,CPU将要停止,等待若干个周期,直到正确的指令从Flash中被读出。 数据缓存区 选择

MAM结构 Flash中除了存储指令之外,还可用来存储不修改或者很少修改的数据,所以在MAM模块中设计有数据缓冲区。数据缓存区可以提高顺序读取数据的操作速度。但是对随机读取操作几乎没有加速效果。 总线 接口 Flash 存储器组0 Flash 存储器组1 ARM局部总线 预取指缓存 预取指缓存 Flash编程由另一个独立的模块完成,Flash在进行编程操作时禁止访问。在编程操作结束后,缓存区的数据将自动失效,可以避免读取到无效的数据。 分支跟踪缓存 分支跟踪缓存 2×128位 2×128位 数据缓存区 数据缓存区 选择

5.5 存储器加速模块(MAM) 存储器加速模块寄存器描述 MAM控制寄存器(MAMCR): 位 7 6 5 4 3 2 [1 : 0] 功能 - 模式控制 MAMCR[1:0]:用于MAM的模式控制,具体关系如下表。 MAMCR[1:0] 描述 00 禁止MAM功能 01 部分使能MAM功能 10 完全使能MAM功能 11 保留

5.5 存储器加速模块(MAM) 存储器加速模块寄存器描述 MAM定时寄存器(MAMTIM): 位 7 6 5 4 3 [2 : 0] 功能 - 取指周期控制 MAMTIM[2:0]:决定使用多少个CCLK周期访问Flash存储器,这样可以调整MAM时序使其匹配处理器操作频率,具体关系如下表。 MATIM[2:0] 描述 000 保留 100 取指周期为4个CCLK 001 取指周期为1个CCLK 101 取指周期为5个CCLK 010 取指周期为2个CCLK 110 取指周期为6个CCLK 011 取指周期为3个CCLK 111 取指周期为7个CCLK

5.5 存储器加速模块(MAM) 存储器加速模块寄存器描述 MAM定时寄存器(MAMTIM): 当访问周期设置为1个CCLk时,实际上关闭了MAM,但是仍可以选择MAM模式对功耗进行优化。 注意:不正确的设定会导致器件的错误操作 MATIM[2:0] 描述 000 保留 100 取指周期为4个CCLK 001 取指周期为1个CCLK 101 取指周期为5个CCLK 010 取指周期为2个CCLK 110 取指周期为6个CCLK 011 取指周期为3个CCLK 111 取指周期为7个CCLK

5.5 存储器加速模块(MAM) MAM使用要点 当改变MAM定时值时,必须先将MAMCR设置为0关闭MAM,然后将新值写入MAMTIM。最后将需要的操作模式的对应值(1或2)写入MAMCR,再次打开MAM; 对于低于20MHz的系统时钟,MAMTIM设定为001,将Flash访问时间设定为1CCLK ;对于20MHz到40MHz之间的系统时钟,建议将Flash访问时间设定为2CCLK;高于40MHz的系统时钟,建议使用3CCLK。

相关启动代码分析 C代码: 设置步骤: 1.关闭MAM模块; 2.根据用户定义的系统时钟频率决定MAM定时寄存器的值; . . . MAMCR = 0; #if Fcclk < 20000000 MAMTIM = 1; #else #if Fcclk < 40000000 MAMTIM = 2; MAMTIM = 3; #endif MAMCR = 2; 1.关闭MAM模块; 2.根据用户定义的系统时钟频率决定MAM定时寄存器的值; 系统时钟(CCLK) MAM定时值 < 20MHz 1 20MHz ~ 40MHz 2 > 40MHz 3 3.打开MAM模块,完全使能MAM模块;

第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO 10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗

外部存储器控制器概述 外部静态存储器控制器是一个AHB总线上的从模块 。 只有LPC2200系列的微控制器含有EMC模块 。 ARM7TDMI-S CPU AHB To VPB 桥 EMC VIC I2C串行接口 SPI串行接口 UART0 & 1 CAN 看门狗定时器 系统控制 外部中断 TIMER0/1 ADC 通用I/O PWM0 实时时钟 SRAM Flash AHB总线 ARM7 局部总线 系统功能 外部静态存储器控制器是一个AHB总线上的从模块 。 EMC 只有LPC2200系列的微控制器含有EMC模块 。 EMC模块为AHB系统总线和外部存储器件之间提供了一个接口。

外部存储器控制器概述 ARM7TDMI-S CPU AHB To VPB 桥 EMC VIC I2C串行接口 外部中断 TIMER0/1 SRAM Flash AHB总线 ARM7 局部总线 系统功能 外部存储器或 外部I/O器件 EMC模块支持4个独立配置的存储器组,每个存储器组的总线宽度可设置为8、16或者32位,但是同一个存储器组的器件必须宽度相同。 每个存储器组最大支持16MB寻址空间。 支持字节定位读取。

外部存储器控制器概述 地址输出线是A[23:0],其中地址位A[25:24]用于4个存储器组的译码(CS[3:0])。 总线 存储器组选择线 ARM7TDMI-S CPU AHB To VPB 桥 EMC VIC I2C串行接口 外部中断 TIMER0/1 SRAM Flash AHB总线 ARM7 局部总线 系统功能 总线 外部存储器或 外部I/O器件 Bank0 Bank1 Bank2 Bank3 存储器组选择线 CS[3:0] Bank 地址范围 配置寄存器 0x8000 0000~0x80FF FFFF BCFG0 1 0x8100 0000~0x81FF FFFF BCFG1 2 0x8200 0000~0x82FF FFFF BCFG2 3 0x8300 0000~0x83FF FFFF BCFG3 地址输出线是A[23:0],其中地址位A[25:24]用于4个存储器组的译码(CS[3:0])。

外部存储器总线接口描述 接口引脚描述: 引脚名 类型 引脚描述 D[31:0] 输入/输出 外部存储器数据线 A[23:0] 输出 外部存储器地址线 OE 输出使能信号,低有效 BLS 字节定位选择信号,低有效 WE 写使能信号,低有效 CS[3:0] 芯片选择信号,低有效 这些引脚与P1、P2和P3口GPIO功能复用,所以在使用外部总线前首先要正确设置PINSEL2寄存器。可以在硬件上对引脚BOOT1:0设定,复位时微处理器自动初始化PINSEL2。或者在软件上字节初始化PINSEL2,这只适用于片内FLASH引导程序运行的系统中。

经过一个等待状态后,存储器输出有效数据。 外部存储器总线接口描述 外部存储器读访问典型波形: XCLK CS OE WE/BLS Addr Data 有效地址 变化数据 有效数据 经过一个等待状态后,存储器输出有效数据。 外部存储器写访问典型波形: XCLK CS OE WE/BLS Addr Data 有效数据 有效地址

5.6 外部存储器控制器(EMC) 相关寄存器 外部存储器控制器包含4个寄存器,它们分别对应一个存储器组。通过这些寄存器,可以分别设置每个存储器组读写访问之间插入的等待周期个数、每个存储器组的总线宽度等。 名称 描述 访问 复位值 地址 BCFG0 存储器组0的配置寄存器 读/写 0x2000 FBEF 0xFFE0 0000 BCFG1 存储器组1的配置寄存器 0xFFE0 0004 BCFG2 存储器组2的配置寄存器 0x1000 FBEF 0xFFE0 0008 BCFG3 存储器组3的配置寄存器 0x0000 FBEF 0xFFE0 000C

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR IDCY:在两个存储器组之间切换访问时,或是读写操作切换时,为了避免器件对总线竞争,需要插入空闲的CCLK周期,该域控制着这个周期数。 计算公式为:空闲CCLK周期数 = IDCY +1;(IDCY的复位值为15)

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR WST1:一些慢速的外部存储器可能不能适应EMC最高速度的读操作,所以需要在读周期中插入若干个空闲等待周期,以降低读操作的速度。该域控制着读周期中插入的空闲CCLK周期数。 计算公式为:读操作周期长度 = WST1 + 3;(WST1的复位值为15)

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器读访问波形(WST1=0): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器读访问波形(WST1=0): XCLK CS OE WE/BLS Addr Data 有效地址 变化数据 有效数据 WST1=0 1个等待周期 读操作,共需3个周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器读访问波形(WST1=1): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器读访问波形(WST1=1): XCLK CS OE WE/BLS Addr Data 有效地址 变化数据 有效数据 增加1个等待周期 WST1=0 1个等待周期 读操作,共需3个周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器读访问波形(WST1=1): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器读访问波形(WST1=1): XCLK CS OE WE/BLS Addr Data 有效地址 变化数据 有效数据 读操作,共需4个周期 WST1=1,2个等待周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR RBLE:如果外部存储器的总线宽度为16或32位,那么读写操作是对总线上的2个或4个字节的数据同时进行的。某些存储器允许对总线上的某几个字节进行独立的读写操作,而不影响其它字节,这通过芯片的字节定位引脚实现。当RBLE位为1时使能字节定位功能,BLS3:0在读写操作时输出低电平。当RBLE位为0时,禁止该功能。

5.6 外部存储器控制器(EMC) 相关寄存器 例1:向地址0x80001000写入一个8位数据0xAA LPC2200 SRAM LDR R0,=0x80001000 MOV R1,#0xAA STRB R1,[R0] 汇编代码: D[7:0] D[15:8] nBLS0 nBLS1 nLB nUB A[23:0] nCS0 nCE nWE D[15:0] LPC2200 SRAM 0x80001000 0xAA 无效数据 1.地址总线上出现地址; 2.数据总线上出现数据0x??AA,高8位无效; 3.控制线nBLS0、nCS0和nWE拉低,将低8位数据写入芯片。

5.6 外部存储器控制器(EMC) 相关寄存器 例2:向地址0x80001001写入一个8位数据0x55 LPC2200 SRAM LDR R0,=0x80001001 MOV R1,#0x55 STRB R1,[R0] 汇编代码: D[7:0] D[15:8] nBLS0 nBLS1 nLB nUB A[23:0] nCS0 nCE nWE D[15:0] LPC2200 SRAM 0x80001000 0x55 无效数据 1.地址总线上出现地址; 2.数据总线上出现数据0x55??,低8位无效; 3.控制线nBLS1、nCS0和nWE拉低,将高8位数据写入芯片。

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR WST2:和读操作类似,一些慢速的外部存储器可能不能适应EMC最高速度的写操作,所以需要在写周期中插入若干个空闲等待周期,以降低写操作的速度。该域控制着写周期中插入的空闲CCLK周期数。 计算公式为:写操作周期长度 = WST2 + 3;(WST2的复位值为15) 对于Burst ROM,计算公式为:写操作周期长度 = WST2 + 1;

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器写访问波形(WST2=0): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器写访问波形(WST2=0): XCLK CS OE WE/BLS Addr Data 有效数据 有效地址 WST1=0 1个等待周期 写操作,共需3个周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器写访问波形(WST2=1): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器写访问波形(WST2=1): XCLK CS OE WE/BLS Addr Data 增加1个等待周期 有效数据 有效地址 WST1=0 1个等待周期 写操作,共需3个周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 外部存储器写访问波形(WST2=1): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 外部存储器写访问波形(WST2=1): XCLK CS OE WE/BLS Addr Data 有效数据 有效地址 WST1=1 2个等待周期 写操作,共需4个周期

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR BUSERR:总线错误状态位。如果EMC检测到AMBA总线上出现一个大于32位数据访问的请求,那么该位将置位。ARM7TDMI-S内核不会出现这样的请求; WPERR:错误写状态位。如果对一个已经写保护(WP位为1)的存储器组进行写操作,该位将置位。向该位写入1,可以清零该位。

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): WP:该位为1时,相应的存储器组被写保护; 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR WP:该位为1时,相应的存储器组被写保护; BM:如果外部存储器使用了Burst ROM,将该位置1; AT:该域通常写入00。

5.6 外部存储器控制器(EMC) 相关寄存器 存储器组配置寄存器0~3(BCFG0~3): 位 23:16 15:11 10 9:5 4 3:0 功能 保留 WST2 RBLE WST1 IDCY 位 31:30 29:28 27 26 25 24 功能 AT MW BM WP WPERR BUSERR MW:该位控制相应存储器组的数据总线宽度,如下表所示。 BCFGx[29:28] 数据总线宽度 00 8 01 16 10 32 11 保留

5.6 外部存储器控制器(EMC) 相关寄存器 MW控制域(BCFG[29:28])与引脚BOOT1:0的关系: 由于Bank0可用于引导程序运行,所以BCFG0[29:28]的复位值与引脚BOOT1:0的设定有关(当BOOT1:0=11时,复位后从片内Flash引导程序运行)。 Bank 复位时BOOT1:0的状态 BCFG[29:28]复位值 存储器宽度 LL 00 8 LH 01 16 HL 10 32 HH 1 XX 2 3

5.6 外部存储器控制器(EMC) 与外部存储器的连接 如果存储器组配置成32位宽度,地址线A0和A1无用,可作为GPIO使用(由PINSEL2设置); 如果存储器组配置成16位宽度,地址线A0无用,可作为GPIO使用(由PINSEL2设置); 如果存储器组配置成8位宽度,并且使能字节定位功能(RBLE=1),存储器的写信号由BLS[0]提供,否则由WE信号提供; 同一寄存器组的器件宽度必须一致。

与外部存储器连接——32位宽度 由1片32位宽度的存储器芯片构成32位存储器 由2片16位宽度的存储器芯片构成32位存储器 由4片8位的存储器芯片构成32位存储器

使用字节定位引脚BLS[0]作为写使能信号 与外部存储器连接——8/16位宽度 由1片16位宽度的存储器芯片构成16位存储器 由2片8位宽度的存储器芯片构成16位存储器 使用字节定位引脚BLS[0]作为写使能信号 由1片8位宽度的存储器芯片构成8位存储器

相关启动代码分析 C代码: 在LPC2200的启动代码中包含总线的初始化设置。 设置步骤: . . . LDR R0, =PINSEL2 IF :DEF: EN_CRP LDR R1, =0x0f814910 ELSE LDR R1, =0x0f814914 ENDIF STR R1, [R0] LDR R0, =BCFG0 LDR R1, =0x1000ffef 1.设置引脚连接模块,将P2口用于外部存储器总线接口。这里使用了汇编的条件编译语句,前者为芯片加密时的设置值(禁止JTAG调试); 芯片加密,禁止JTAG调试功能 2.设置BANK0,将其设置为16位总线接口,使能字节定位功能,并把读写周期设置为最大,以兼容不同速度的外部存储器,实际应用中根据存储器的实际速度进行调整;

相关启动代码分析 C代码: 设置步骤: 3.设置BANK1,与BANK0的设置值相同; . . . LDR R0, =BCFG1 LDR R1, =0x1000ffef STR R1, [R0] ; LDR R0, =BCFG2 ; LDR R1, =0x2000ffef ; STR R1, [R0] ; LDR R0, =BCFG3 3.设置BANK1,与BANK0的设置值相同; 4.BANK3和BANK4被设置为32位宽度其它与BANK0相同。因为在暂时没有使用到这两个BNAK,所以在此被屏蔽,需要使用时再进行设置;

第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO 10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗

5.7 引脚连接模块 概述 LPC2000系列微控制器的大部分管脚都具有多种功能,即管脚复用,但是同一引脚在同一时刻只能使用其中一个功能,通过配置相关寄存器控制多路开关来连接引脚与片内外设。 GPIO TXD0 PWM1输出 P0.0 通过引脚连接模块控制引脚功能

外部存储器寄存器描述——PINSEL0 表示寄存器中某两位的设定值 如PINSEL0[1:0]=01时,连接TXD0 表示寄存器中的控制位 引脚名称 00 01 10 11 复位值 1:0 P0.0 GPIO P0.0 TxD0 PWM1 保留 3:2 P0.1 GPIO P0.1 RxD0 PWM3 EINT0 5:4 P0.2 GPIO P0.2 SCL 捕获0.0 7:6 P0.3 GPIO P0.3 SDA 匹配0.0 EINT1 9:8 P0.4 GPIO P0.4 SCK0 捕获0.1 11:10 P0.5 GPIO P0.5 MISO0 匹配0.1 13:12 P0.6 GPIO P0.6 MOSI0 捕获0.2 15:14 P0.7 GPIO P0.7 SSEL0 PWM2 EINT2 17:16 P0.8 GPIO P0.8 TxD1 PWM4 19:18 P0.9 GPIO P0.9 RxD1 PWM6 EINT3 21:20 P0.10 GPIO P0.10 RTS 捕获1.0 23:22 P0.11 GPIO P0.11 CTS 捕获1.1 25:24 P0.12 GPIO P0.12 DSR 匹配1.0 27:26 P0.13 GPIO P0.13 DTR 匹配1.1 29:28 P0.14 GPIO P0.14 CD 31:30 P0.15 GPIO P0.15 RI 表示寄存器中某两位的设定值 如PINSEL0[1:0]=01时,连接TXD0 表示寄存器中的控制位 如[9:8]表示PINSEL0寄存器的第9和8位

如:PINSEL[19:18]设置为01时,引脚P0.9的功能为RXD1 引脚名称 00 01 10 11 复位值 1:0 P0.0 GPIO P0.0 TxD0 PWM1 保留 3:2 P0.1 GPIO P0.1 RxD0 PWM3 EINT0 5:4 P0.2 GPIO P0.2 SCL 捕获0.0 7:6 P0.3 GPIO P0.3 SDA 匹配0.0 EINT1 9:8 P0.4 GPIO P0.4 SCK0 捕获0.1 11:10 P0.5 GPIO P0.5 MISO0 匹配0.1 13:12 P0.6 GPIO P0.6 MOSI0 捕获0.2 15:14 P0.7 GPIO P0.7 SSEL0 PWM2 EINT2 17:16 P0.8 GPIO P0.8 TxD1 PWM4 19:18 P0.9 GPIO P0.9 RxD1 PWM6 EINT3 21:20 P0.10 GPIO P0.10 RTS 捕获1.0 23:22 P0.11 GPIO P0.11 CTS 捕获1.1 25:24 P0.12 GPIO P0.12 DSR 匹配1.0 27:26 P0.13 GPIO P0.13 DTR 匹配1.1 29:28 P0.14 GPIO P0.14 CD 31:30 P0.15 GPIO P0.15 RI 如:PINSEL[19:18]设置为01时,引脚P0.9的功能为RXD1

外部存储器寄存器描述——PINSEL1 PINSEL1 引脚名称 00 01 10 11 复位值 1:0 P0.16 GPIO P0.16 EINT1 匹配0.2 保留 3:2 P0.17 GPIO P0.17 捕获1.2 SCK1 匹配1.2 5:4 P0.18 GPIO P0.18 捕获1.3 MISO1 匹配1.3 7:6 P0.19 GPIO P0.19 MOSI1 9:8 P0.20 GPIO P0.20 SSEL1 EINT3 11:10 P0.21 GPIO P0.21 PWM5 13:12 P0.22 GPIO P0.22 捕获0.0 匹配0.0 15:14 P0.23 GPIO P0.23 17:16 P0.24 GPIO P0.24 19:18 P0.25 GPIO P0.25 21:20 P0.26 23:22 P0.27 GPIO P0.27 AIN0 捕获0.1 匹配0.1 25:24 P0.28 GPIO P0.28 AIN1 捕获0.2 27:26 P0.29 GPIO P0.29 AIN2 捕获0.3 匹配0.3 29:28 P0.30 GPIO P0.30 AIN3 31:30 P0.31

外部存储器寄存器描述——PINSEL2 PINSEL2 描述 复位值 1:0 保留 00 2 为0时,P1.36:26作GPIO使用 5:4 控制数据总线和选通引脚的使用 复位时将BOOT1:0引脚电平作为该域的复位值 6 当数据总线不占用P3.29时: 为1时,P3.29作GPIO使用 为0时,P3.29作AIN6使用 1 7 当数据总线不占用P3.28时: 为1时,P3.28作GPIO使用 为0时,P3.28作AIN7使用 8 为1时,P3.27作GPIO使用 为0时,P3.27作WE使用

外部存储器控制器概述——PINSEL2 PINSEL2 描述 复位值 10:9 保留 — 11 为1时,P3.26作CS1使用 为0时,P3.26作GPIO使用 12 13 当地址总线不占用P3.23引脚时: 为1时,P3.23作外部总线时钟输出(XCLK)使用 为0时,P3.29作GPIO使用 15:14 为00时,P3.25作GPIO使用 为01时,P3.25作CS2使用 其它设置值保留 00 17:16 为00时,P3.24作GPIO使用 为01时,P3.24作CS3使用 19:18

外部存储器控制器概述——PINSEL2 PINSEL2 描述 复位值 20 当数据总线没有占用P2.29:28时: 为0时,P3.29:28作GPIO使用 为1时,保留 21 当数据总线没有占用P2.30时: 为0时,P2.30作GPIO使用 为1时,P2.30作AIN4使用 1 22 当数据总线没有占用P2.31时: 为0时,P2.31作GPIO使用 为1时,P2.31作AIN5使用 23 为0时,P3.0作GPIO使用 为1时,P3.0作地址线A0使用 复位时,BOOT1:0引脚都为低电平时,该位为1 24 为0时,P3.1作GPIO使用 为1时,P3.1作地址线A1使用 复位时,BOOT1引脚为低电平时,该位为1 27:25 控制P3.23/A23和P3.22/A2中的地址总线的数目 复位时,BOOT1:0引脚都为高电平时,该域为000,否则为111 31:28 保留

PINSEL[5:4]与数据总线和控制线的关系列表 外部总线设置 PINSEL[5:4]与数据总线和控制线的关系列表 PINSEL2 [5:4] 数据总线宽度 P2.27:15 P2.15:8 P2.7:0 P3.31 P3.30 P3.29:28 P1.1 P1.0 00 8位 — D[7:0] BLS0 OE CS0 01 16位 D[15:0] BLS1 10 32位 D[31:16] BLS3:2 11 无 注:“—”表示该引脚不作数据总线使用,可作其它用途。 PINSEL[27:25]与地址线的关系列表 PINSEL2 [27:25] 000 001 010 011 100 101 110 111 地址线宽度 无地址线 A3:2 A5:2 A7:2 A11:2 A15:2 A19:2 A23:2

5.7 引脚连接模块 使用示例——将P0.8、P0.9设置为TxD1、RxD1 5.7 引脚连接模块 使用示例——将P0.8、P0.9设置为TxD1、RxD1 通过查阅PINSE0寄存器设置表,得到P0.9和P0.8的控制位为PINSEL0[19:16],当该域设置为[0101](0x05)时选择 RxD1和 TxD1 ; C代码: PINSEL0 = 0x05 << 16; 为了不影响别的管脚连接设置,通常选择下面的设置方法。 C代码: PINSEL0 = (PINSEL0 & 0xFFF0FFFF) | (0x05 << 16);

5.7 引脚连接模块 启动代码相关部分 LPC2200系列微控制器是总线开放型芯片,其总线宽度可设置为8位、16位或32位,对于没有使用到的总线引脚(比如16位总线宽度时,D16~D31位没有使用),可作为GPIO使用。

5.7 引脚连接模块 启动代码相关部分 C代码: . . . LDR R0, =PINSEL2 IF :DEF: EN_CRP LDR R1, =0x0f814910 ELSE LDR R1, =0x0f814914 ENDIF STR R1, [R0] 如果在工程目标中选择RelInChip项,编译器将会预定义EN_CRP宏,PINSEL2被设置为0x0f814910,禁止JTAG调试。 当没有预定义EN_CRP宏时,PINSEL2被设置为0x0f814914,使能JTAG调试。

第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 第5章 目录 1.简介 2.引脚配置 3.存储器寻址 4.系统控制模块 5.存储器加速模块 6.外部存储器控制器 7.引脚连接模块 8. 向量中断控制器 9.GPIO 10.UART0 11.UART1 12.I2C接口 13.SPI接口 14.定时器0/1 15.脉宽调制器(PWM) 16.A/D转换器 17.实时时钟 18.看门狗

5.8 向量中断控制器(VIC) 向量中断控制器概述 ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源,最多可以有32个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。 ARM7TDMI-S IRQ FIQ VIC 中断请求输入0 中断请求输入31 . . .

5.8 向量中断控制器(VIC) 中断源列表 模块 可产生中断的标志 VIC通道号 WDT 看门狗中断(WDINT) — 保留给软件中断 1 — 保留给软件中断 1 ARM内核 EmbeddedICE,DbgCommRx 2 EmbeddedICE,DbgCommTx 3 定时器0 匹配0~3(MR0,MR1,MR2,MR3) 捕获0~3(CR0,CR1,CR2,CR3) 4 定时器1 5 UART0 Rx线状态(RLS),发送保持寄存器空(THRE) Rx数据可用(RDA),字符超时指示(CTI) 6

5.8 向量中断控制器(VIC) 中断源列表 模块 可产生中断的标志 VIC通道号 UART1 Rx线状态(RLS),发送保持寄存器空(THRE) Rx数据可用(RDA),字符超时指示(CTI) 7 PWM0 匹配0~6(MR0,MR1,MR2,MR3,MR4,MR5,MR6) 8 I2C SI(状态改变) 9 SPI0 SPI中断标志(SPIF),模式错误(MODF) 10 SPI1 11 PLL PLL锁定(PLOCK) 12 RTC 计数器增加(RTCCIF),报警(RTCALF) 13

5.8 向量中断控制器(VIC) 中断源列表 模块 可产生中断的标志 VIC通道号 系统控制 外部中断0(EINT0) 14 15 外部中断2(EINT2) 16 外部中断3(EINT3) 17 A/D A/D转换器 18 保留 19~31

5.8 向量中断控制器(VIC) 允许中断源产生中断 芯片内部许多部件都可以作为中断源,但并不是每个中断源都需要在中断情况下进行操作,也可以通过其它方法来处理各种状态。 比如通过串口发送一段数据,可以选择在一批发送结束后产生中断,然后在中断服务程序中发送下一批数据。也可以通过查询发送标志位来决定什么时候发送下一批数据。 允许中断源产生中断由寄存器VICIntEnable和VICIntEnClr控制,前者使能中断,后者禁止中断。

5.8 向量中断控制器(VIC) 允许中断源产生中断 中断使能寄存器(VICIntEnable): 位 31 … 18 17 2 1 功能 保留 A/D转换器 外部中断3 ARM内核 — WDT 寄存器中每一位控制着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,允许对应的中断源产生中断。 中断使能清零寄存器(VICIntEnClr): 位 31 … 18 17 2 1 功能 保留 A/D转换器 外部中断3 ARM内核 — WDT 与中断使能寄存器的功能相反,向某位写入1时,禁止对应的中断源产生中断。

5.8 向量中断控制器(VIC) 选择产生中断的类型 ARM7TDMI内核具有FIQ和IRQ两个中断输入,所有中断源产生的中断都可以选择产生其中一种中断。这通过中断选择寄存器完成。 中断选择寄存器(VICIntSelect): 位 31 … 18 17 2 1 功能 保留 A/D转换器 外部中断3 ARM内核 — WDT 寄存器中每一位控制着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,对应中断源产生的中断为FIQ中断,否则为IRQ中断。

5.8 向量中断控制器(VIC) 中断类型 中断输入请求可以在VIC中被设置为以下三类: FIQ中断:具有最高优先级; 向量IRQ中断:具有中等优先级; 非向量IRQ中断:具有最低优先级; 19个 中断输入 VIC 将32个 进行分配 13个未使用 FIQ中断 向量IRQ中断 非向量IRQ中断 中断源0 中断源1 …… 中断源18

5.8 向量中断控制器(VIC) 向量IRQ中断 VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址。在发生向量IRQ中断后,相应优先级的服务程序入口地址被装入向量地址寄存器VICVectAddr中,通过一条ARM指令即可跳转到相应的服务程序入口处,所以向量IRQ中断具有较快的中断响应。

5.8 向量中断控制器(VIC) 非向量IRQ中断 任何中断源都可以设置为非向量IRQ中断。它与向量IRQ中断的区别在于前者不能为每个非向量IRQ中断源设置服务程序地址,而是所有的非向量IRQ中断都共用一个相同的服务程序入口地址。 当有多个中断源被设置为非向量IRQ中断时,需要在用户程序中识别中断源,并分别作出处理。所以非向量IRQ中断响应延时相对较长。

5.8 向量中断控制器(VIC) 向量IRQ中断相关寄存器 VICVectCntl0~15和VICVectAddr0~15两类寄存器与向量IRQ中断设置有关,前者为中断源分配向量IRQ中断的优先级,后者为该中断优先级设置服务程序入口地址。寄存器名称最后的数字同时也代表该寄存器控制的向量IRQ中断的优先级,数值越小优先级越高。 注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。

5.8 向量中断控制器(VIC) 向量IRQ中断相关寄存器 向量控制寄存器(VICVectCntl0~15): 位 7 6 5 [4:0] 功能 - EN 中断源序号 VICVectCntlx[4:0]:分配给此优先级向量IRQ中断的中断源序号; VICVectCntlx[5]:该位为1,使能当前优先级的向量IRQ中断。否则为禁止。 向量地址寄存器(VICVectAddr0~15): 位 [31:0] 功能 中断服务程序入口地址 该寄存器中存放对应优先级向量IRQ中断服务程序的入口地址。

5.8 向量中断控制器(VIC) 非向量IRQ中断相关寄存器 向量地址寄存器(VICDefVectAddr): 位 [31:0] 功能 中断服务程序入口地址 VICDefVectAddr寄存器存放非向量中断服务程序的入口地址,当发生非向量中断时该寄存器中保存的地址存入VICVectAddr寄存器。

5.8 向量中断控制器(VIC) 产生中断后的服务程序地址 在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。如果为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在异常向量表的IRQ异常入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时。 向量地址寄存器(VICVectAddr): 位 [31:0] 功能 中断服务程序入口地址

5.8 向量中断控制器(VIC) 中断状态寄存器 如果使用了多个非向量IRQ中断或多个FIQ中断,那么在发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断请求状态。 任何在VIC中使能的中断都会把中断请求反映在“所有中断状态寄存器(VICRawIntr)”中。

5.8 向量中断控制器(VIC) 中断状态寄存器 所有中断状态寄存器(VICRawIntr): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生中断请求。 FIQ状态寄存器(VICFIQStatus): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生FIQ中断请求。 IRQ状态寄存器(VICIRQStatus): 位 [31:0] 功能 当某位为1时表示对应位的中断源产生IRQ中断请求。

5.8 向量中断控制器(VIC) 软件中断寄存器 在一些特殊场合或者调试时,可能需要使用软件强制产生某个中断请求。 软件中断寄存器(VICSoftInt): 位 [31:0] 功能 当某位为1时,将产生与该位相对应的中断请求。 软件中断清零寄存器(VICSoftIntClear): 位 [31:0] 功能 当某位为1时,将清零VICSoftInt寄存器中对应位

当该位为1时,只能在特权模式下访问VIC寄存器。 保护使能寄存器 在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。 软件中断寄存器(VICSoftInt): 位 [31:1] 功能 — 当该位为1时,只能在特权模式下访问VIC寄存器。

IRQ中断的设计实例 设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。 步骤: C代码: 1.设置引脚连接模块,将P0.16设置为外部中断功能; ... PINSEL1 = (PINSEL1&0xFFFFFFFC)|0x01; VICIntSelect = 0x00000000; VICVectCntl0 = (0x20 | 14); VICVectAddr0 = (int)IRQ_Eint0; EXTINT = 0x01; VICIntEnable = (1 << 14); (1) (2) 2.设置所有中断为IRQ中断; (3) 3.将外部中断0(在中断源列表中序号14)设置到优先级0中,并使能IRQ中断; (4) (5) 4.将外部中断0的中断服务程序写入对应优先级的地址寄存器中; 5.清除外部中断0的标志后使能外部中断0;

图示IRQ中断的发生过程 1.正在执行用户程序; 用户程序 中断服务程序 异常向量表 2.外部中断0发生中断; 0x0000 0000 0xFFFF FFFF 用户程序 中断服务程序 异常向量表 2.外部中断0发生中断; 3.VIC硬件将中断服务程序地址装入VICVectAddr寄存器; ④ ⑤ ① 4.程序跳转至异常向量表中IRQ入口0x0018处; ② 5.执行指令跳转至VICVectAddr寄存器中的中断服务地址; ⑥ 6.中断服务程序执行完毕,返回被中断的用户程序继续执行被中断的代码。 ⑤ LDR PC, [PC, #-0xff0] ③ IRQ_Eint0 ??? VICVectAddr0 VICVectAddr

图示IRQ中断的发生过程 注意: 任何IRQ中断产生之后,微控制器跳转到地址0x18执行代码,该地址处的指令为: LDR PC, [PC, #-0xff0] 在执行该指令时,PC指向当前指令后的第2条指令,即地址0x20。 该指令将内存地址: 0x20-0xFF0 = 0xFFFFF030 处的内容存入PC,该地址正是 VICVectAddr寄存器的地址。 所以一条ARM指令即可实现程序向中断服务程序的跳转。 0x0000 0000 0xFFFF FFFF 用户程序 中断服务程序 异常向量表 ④ ⑤ ① ② ⑥ ③ IRQ_Eint0 ??? VICVectAddr0 VICVectAddr ⑤ LDR PC, [PC, #-0xff0] IRQ_Eint0

5.8 向量中断控制器(VIC) 使用VIC的注意要点 如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式; 将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源; ADS1.2规定在定义中断服务函数时必须加入关键字“__irq”,保证函数返回时会切换处理器模式; 在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。

VIC相关启动代码分析 TargetResetInit函数: ... /* 初始化VIC */ VICIntEnClr = 0xffffffff; VICVectAddr = 0; VICIntSelect = 0; 在LPC2100、LPC2200的启动代码中包含有VIC初始化程序,默认是禁止所有中断。 处理器各模式堆栈设置: 在LPC2100、 LPC2200的启动代码中默认是关闭IRQ和FIQ中断的。如果用户需要使用这两个中断,则要设置CPSR寄存器的I位或F位,这需要在特权模式下处理。最简单的方法是在启动代码中设置(修改0xdf值)。 InitStack ... MSR CPSR_c,#0xdf LDR SP,=StackUsr MOV PC,R0

VIC相关启动代码分析 异常向量表: 一旦产生IRQ中断,微控制器切换到IRQ模式,并跳转到向量表0x0018地址执行指令。 CODE32 AREA vectors,CODE,READONLY ENTRY Reset LDR PC, ResetAddr LDR PC, UndefinedAddr . . . DCD 0xb9205f80 LDR PC, [PC, #-0xff0] LDR PC, FIQ_Addr ResetAddr 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代码段。