《第02章、ARMCortexM3体系结构优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第02章、ARMCortexM3体系结构优秀PPT.ppt(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第02章、ARMCortexM3体系结构现在学习的是第1页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院2.1 ARM Cortex-M3编程模型编程模型处理器的“体系结构”指从程序员的角度观察到的处理器组织方式,所以又称为处理器的编程模型。其主要内容为处理器内的寄存器组织、对存储器的寻址方式、指令系统等。现在学习的是第2页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院2.1 ARM Cortex-M3编程模型编程模型ARM Cortex-M3处理器内核是ARMv7-M架构,建立在一个高性能哈佛结构的三级流水线基础上,可满足事件驱动的应用需求。通
2、过广泛采用时钟选通等技术,改进了每个时钟周期的性能,包括单周期的32x32乘法和硬件除法,获得了优异的能效比。通过一个基于堆栈的异常模式的实现,显著地缩小了内核的物理尺寸。Cortex-M3内核实现了Thumb-2指令集传统Thumb指令集的一个超集,既获得了传统32位代码的性能,又具有16位的高代码密度。现在学习的是第3页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院ARM Cortex-M3内核模块框图内核模块框图现在学习的是第4页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院 Thumb状态:处理器执行16位的、半字对齐的Thumb指令或者
3、32位的、整字对齐的Thumb-2指令。Thumb状态是Cortex-M3处理器正常的执行状态。调试状态:处理器停机调试时进入该状态。与ARM7处理器不同,Cortex-M3处理器不支持ARM指令的执行,也即没有ARM状态。Cortex-M3处理器工作状态与模式处理器工作状态与模式现在学习的是第5页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院Cortex-M3处理器工作模式处理器工作模式 Cortex-M3支持两种工作模式:线程模式(thread mode)和处理模式(handler mode)。线程模式:在复位时,Cortex-M3处理器进入线程模式,异常返回时也会
4、进入该模式,特权和用户(非特权)代码能够在线程模式下运行,大部分任务执行在这种模式正常程序执行的模式处理模式:出现异常时,Cortex-M3处理器进入处理模式,在处理模式中,所有代码都是特权访问的。现在学习的是第6页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院知识扩展:前后台系统知识扩展:前后台系统早期的嵌入式系统中没有操作系统的概念,通常把嵌入式程序分成两部分,即前台程序和后台程序。应用程序是一个无限的循环,循环中调用相应的函数完成相应的操作,这部分可以看成后台行为。前台程序通过中断来处理事件。后台程序也叫任务级程序,前台程序也叫事件处理级程序。对于实时性要求特别严
5、格的操作通常由中断来完成。由于这类系统结构简单,几乎不需要RAM/ROM的额外开销,因而在简单的嵌入式应用被广泛使用。Cortex-M3的线程模式和处理模式在前后台系统中,后台程序运行在线程模式下,前台程序运行在处理模式下。现在学习的是第7页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院Cortex-M3处理器特权访问处理器特权访问Cortex-M3的代码执行进行了特权分级,可以分为特权执行或非特权执行。非特权执行时对有些资源的访问受到限制或不允许访问。特权执行可以访问所有资源。特权分级可以提供一种存储器访问的保护机制,避免普通的用户程序代码因意外而进行对存储器关键区域
6、的操作。处理模式始终特权访问,线程模式可以是特权或非特权访问。系统复位之后,处理器默认进入线程模式,特权级别为特权访问,此时的程序可以访问所有范围的存储器,并且可以执行所有指令。应用程序可通过MSR指令清零CONTROL寄存器的第0位,配置为用户(非特权)访问。当线程模式的程序从特权访问变为用户访问后,本身便不能回到特权访问。只有通过执行一条系统调用指令SVC,触发SVC异常才能使用户访问的线程模式程序重新进入特权访问。现在学习的是第8页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院 Cortex-M3处理器拥有16个32位的通用寄存器R0-R15以及一些特殊功能寄存器
7、。绝大多数的16位指令只能使用R0-R7(低组寄存器),而32位的Thumb-2指令则可以访问所有通用寄存器。特殊功能寄存器有预定义的功能,包括状态字寄存器xPSR、控制寄存器CONTROL、中断屏蔽寄存器PRIMASK、FAULTMASK、BASEPRI等,它们必须通过专用的指令来访问。2.2 ARM Cortex-M3处理器寄存器组织处理器寄存器组织现在学习的是第9页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院ARM Cortex-M3寄存器组织寄存器组织现在学习的是第10页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院寄存器R13用作堆栈
8、指针(SP)。它自动与字即4字节边界对齐。在Cortex-M3处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用R13(或写作SP)时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问。这两个堆栈指针分别是:主堆栈指针(MSP),或写作SP_main。这是缺省的堆栈指针,它由操作系统内核、异常服务例程以及所有需要特权访问的应用程序代码来使用。进程堆栈指针(PSP),或写作SP_process。用于常规的应用程序代码(不处于异常服用例程中时)。处理模式始终使用SP_main,而线程模式可配置为SP_main 或SP_process。R13是堆栈指针。要注意的是,并不是每个程序
9、都要用齐两个堆栈指针。简单的应用程序只使用MSP就可以了。堆栈指针用于访问堆栈,并且PUSH指令和POP指令默认使用SP。堆栈指针堆栈指针SP(r13)现在学习的是第11页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院寄存器R14是子程序的链接寄存器(LR)。在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于接收来自PC的返回地址。LR也用于异常返回。其它任何时候都可以将R14看作一个通用寄存器。链接指针链接指针LR(r14)现在学习的是第12页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院寄存器R15为
10、程序计数器(PC)。该寄存器的位0 始终为0,因此,指令始终与字或半字边界对齐。由于Cortex-M3处理器内部使用了指令流水线,读PC时返回的值是当前指令的地址+4。比如说:0 x1000:MOV R0,PC;R0=0 x1004如果向PC中写数据,就会引起一次程序的分支(但是不更新LR寄存器)。程序指针程序指针PC(r15)现在学习的是第13页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院程序状态寄存器程序状态寄存器xPSR 系统级的Cortex-M3处理器状态可分为3类,因此有3个程序状态寄存器。这3个寄存器分别是:应用PSR(APSR)、中断PSR(IPSR)、
11、执行PSR(EPSR)。通过MRS/MSR指令,这3个PSR即可以单独访问,也可以组合访问(2个组合,3个组合都可以)。当使用三合一的方式访问时,应使用名字“xPSR”或者“PSR”。现在学习的是第14页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院APSR应用PSR(APSR)包含条件代码标志。在进入异常之前,Cortex-M3 处理器将条件代码标志保存在堆栈内。您可以使用MSR(2)和MRS(2)指令来访问APSR。N位:负数或小于标志。为1时表示结果为负数或小于,为0时表示结果为正数或大于。Z位:零标志。为1时表示结果为0,为0时表示结果为非0。C位:进位/借位标
12、志。为1时表示有进位或借位,为0时表示没有进位或借位。V位:溢出标志。为1时表示溢出,为0时表示没有溢出。Q位:粘着饱和(sticky saturation)标志。现在学习的是第15页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院IPSR 中断PSR(IPSR)包含当前激活的异常的ISR 编号。IPSR的9位表示了当前激活的异常的ISR 编号也即中断号。常用的一些号有:基础级别=0,NMI=2,SVCall11,INTISR0=16,INTISR1=17,INTISR239=255。具体的中断编号请参见中断有关的章节。现在学习的是第16页,共42页桂林桂林电电子科技大子
13、科技大学学信息信息与与通信通信学学院院EPSR执行PSR(EPSR)包含两个重叠的区域:可中断-可继续(interruptible-continuable)指令(ICI)区,用于被打断的多寄存器加载和存储指令;用于If-Then(IT)指令的执行状态区,以及T位(Thumb状态位)。ICI区:15:12位,可中断-可继续的指令位。如果在执行LDM或STM操作时产生一次中断,则LDM或STM操作暂停。EPSR使用位15:12来保存该操作中下一个寄存器操作数的编号。在中断响应之后,处理器返回由15:12指向的寄存器并恢复操作。如果ICI区指向的寄存器不在指令的寄存器列表中,则处理器对列表中的下一个
14、寄存器(如果有)继续执行LDM/STM 操作。IT If-Then区:15:10位和26:25位,它们是If-Then指令的执行状态位。包含If-Then模块的指令数目和它们的执行条件。T位:24位。T位使用一条可相互作用的指令来清零,这里写入的PC的位0为0。也可以使用异常出栈操作来清零,被压栈的T位为0。当T位为零时执行指令会引起INVSTATE 异常。现在学习的是第17页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院控制寄存器控制寄存器 控制寄存器有两个用途:其一,用于定义特权级别;其二,用于选择当前使用哪个堆栈指针。CONTROL1位:堆栈指针选择。该位为0时表
15、示选择主堆栈指针MSP(复位后的缺省值);为1时表示选择进程堆栈指针PSP。在线程模式下,可以使用PSP。在处理模式下,只允许使用MSP,所以此时不得往该位写1。CONTROL0位:特权级别选择。为0时表示特权级的线程模式;为1时表示用户级的线程模式。处理模式永远都是特权级的。仅当在特权级下操作时才允许写该位。一旦进入了用户级,唯一返回特权级的途径,就是触发一个(软)中断,再由服务例程改写该位。现在学习的是第18页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院PRIMASK,FAULTMASK和和BASEPRI这三个寄存器用于控制异常的使能和清除。PRIMASK:这是一
16、个只有单一比特的寄存器。在它被置1后,就关掉所有可屏蔽的异常,只剩下NMI和硬fault可以响应。它的缺省值是0,表示没有关中断。FAULTMASK:这也是一个只有一个位的寄存器。当它置1时,只有NMI才能响应,所有其它的异常,甚至是硬fault,也通通闭嘴。它的缺省值也是0,表示没有关异常。BASEPRI:这个寄存器最多有9位(由表达优先级的位数决定)。它定义了被屏蔽优先级的阈值。当它被设成某个值后,所有优先级号大于等于此值的中断都被关(优先级号越大,优先级越低)。但若被设成0,则不关闭任何中断,0也是缺省值。只有在特权级下,才允许访问这3个寄存器。现在学习的是第19页,共42页桂林桂林电电
17、子科技大子科技大学学信息信息与与通信通信学学院院 Cortex-M3处理器的存储器系统与传统ARM处理器的存储器系统架构有所不同,主要体现在几个方面:1、Cortex-M3 的存储器映射是预定义好的,并且还规定了哪个位置应该使用哪个总线,而传统的ARM处理器的存储器映射时由各生产厂家自己定义的;2、Cortex-M3的存储器系统支持位带(Bit-band)操作,通过它可以实现对单一比特的位操作,适用于一些特殊的存储器区域中;3、Cortex-M3的存储器系统支持非对齐访问和互斥访问,这个特性是传统ARM处理器没有的;4、Cortex-M3的存储器系统同时支持大端格式配置和小端模式配置。2.3
18、ARM Cortex-M3存存储储器器现在学习的是第20页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院大端格式:以大端格式存储字数据以大端格式存储字数据 现在学习的是第21页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院小端格式 以小端格式存储字数据以小端格式存储字数据 Cortex-M3 处理器有一个配置管脚处理器有一个配置管脚BIGEND,使用它来选择,使用它来选择小端格式或大端格式。该管脚在复位时被采样,结束复位后存储器小端格式或大端格式。该管脚在复位时被采样,结束复位后存储器格式不能修改。格式不能修改。现在学习的是第22页,共42页桂林
19、桂林电电子科技大子科技大学学信息信息与与通信通信学学院院ARM Cortex-M3存储器映射存储器映射现在学习的是第23页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院ARM Cortex-M3存储器访问属性存储器访问属性Cortex-M3在定义了存储器映射之外,还为存储器的访问规定了4种属性,分别是:可否缓冲(Bufferable)、可否缓存(Cacheable)、可否执行(Executable)、可否共享(Sharable)。Cortex-M3有一个缺省的存储访问许可,它能防止使用户代码访问系统控制存储空间,保护NVIC、MPU等关键部件。现在学习的是第24页,共4
20、2页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院 在支持了位带操作后,Cortex-M3可以使用普通的加载/存储指令来对单一的比特进行读写。在Cortex-M3中,有两个区中实现了位带。其中一个是SRAM区的最低1MB范围(0 x20000000 0 x200FFFFF),第二个则是片内外设区的最低1MB范围(0 x40000000 0 x400FFFFF)。这两个位带中的地址除了可以像普通的RAM一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32位的字。当你通过位带别名区访问这些字时,就可以达到访问原始比特的目的。存存储储器器位带位带(bit-ba
21、nd)操作操作现在学习的是第25页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院地址映射公式如下:bit_word_offset=(byte_offset32)+(bit_number4)bit_word_addr=bit_band_base+bit_word_offset这里:bit_word_offset 为bit-band 存储区中的目标位的位置。bit_word_addr 为别名存储区中映射为目标位的字的地址。bit_band_base 是别名区的开始地址。bit_offset 为bit-band 区中包含目标位的字节的编号。bit_number 为目标位的位位
22、置(0-7)。例1:欲置位地址0 x20000000中的比特7。在不使用bit-band操作的时候,操作的流程如下:首先将地址0 x20000000的一个32位字读取到某一通用寄存器,然后给该寄存器的最低位置1,然后将该寄存器的值回写入地址0 x20000000。使用bit-band操作,则根据以上公式可知,byte_offset为0,bit_number为7,bit_band_base 别名区开始地址为0 x22000000,所以地址0 x20000000的位7映射为地址0 x2200001C的一个字,直接向0 x2200001C写一个值0 x01即可。显然,从操作的角度说,使用bit-ba
23、nd操作的方式更简单,效率更高。存存储储器器位带位带(bit-band)操作操作现在学习的是第26页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院存存储储器器位带位带(bit-band)操作操作现在学习的是第27页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院2.4 ARM Cortex-M3异常异常处处理理 当正常的程序执行流程发生暂时的停止,称为异常。例如,处理一个外部的中断请求,系统执行完当前执行的指令后可以转去执行异常处理程序。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发
24、生,它们将会按固定的优先级进行处理。中断与异常的区别在于:中断请求信号来自Cortex-M3内核外面,来自各种片上外设和外扩的外设,对Cortex-M3来说是异步的;而异常则是在Cortex-M3内核执行指令或访问存储器时产生,因此对Cortex-M3来说是同步的。现在学习的是第28页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院异常类型异常类型异常类型位置优先级描述-0-在复位时栈顶从向量表的第一个入口加载。复位 1 -3(最高)在上电和热复位(warm reset)时调用。在第一条指令上优先级下降到最低(线程模式)。异步的。不可屏蔽中断 2-2 不能被除复位之外的任
25、何异常停止或占先。异步的。硬故障 3-1 由于优先级的原因或可配置的故障处理被禁止而导致不能将故障激活时的所有类型故障。同步的。存储器管理 4 可调整MPU 不匹配,包括违反访问规范以及不匹配。同步的。总线故障 5 可调整预取故障,存储器访问故障,以及其它相关的地址/存储故障。精确时是同步,不精确时是异步。使用故障 6 可调整 使用故障。例如,执行未定义的指令或尝试不合法的状态转换。同步的。-7-10-保留SVCall 11 可调整 利用SVC 指令调用系统服务。同步的。调试监控 12 可调整 调试监控,在处理器没有停止时出现。同步的,但只有在使能时是有效的。如果它的优先级比当前有效的异常的优
26、先级要低,则不能被激活。-13-保留PendSV 14 可调整 可挂起的系统服务请求。异步的,只能由软件来实现挂起。SysTick 15 可调整 系统节拍定时器(tick timer)已启动。异步的。外部中断 16及以上 可调整 在内核的外部产生。INTISR239:0,通过NVIC(设置优先级)输入,都是异步的。现在学习的是第29页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院异常优先级异常优先级 优先级决定一个异常是否能被掩蔽,以及在未掩蔽的情况下何时可以响应。优先级的数值越小,则优先级越高。高优先级异常会抢占(preempt)低优先级异常。有3个系统异常:复位,N
27、MI以及硬故障,它们有固定的优先级,并且它们的优先级号是负数,从而高于所有其它异常。所有其它异常的优先级则都是可编程的,但不能被编程为负数。原则上,Cortex-M3支持3个固定的高优先级和多达256级的可编程优先级,并且支持128级抢占。但是,绝大多数Cortex-M3芯片都会精简设计,以致实际上支持的优先级数会更少,如8级,16级,32级等。为了使抢占机能变得更可控,Cortex-M3还把256级优先级按位分成高低两段,分别称为抢占优先级和子优先级。NVIC中有一个寄存器是“应用程序中断及复位控制寄存器”,它里面有一个8位的位段名为“优先级组”。该位段的值对每一个优先级可配置的异常都有影响
28、把其优先级分为2个位段:MSB所在的位段(左边的)对应抢占优先级,而LSB所在的位段(右边的)对应子优先级。现在学习的是第30页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院异常向量异常向量异常类型表项偏移地址异常向量00 x00MSP的初始值10 x04复位向量(PC初始值)20 x08NMI30 x0C硬故障40 x10存储器故障50 x14总线故障60 x18使用故障7-100 x1C-0 x28保留110 x2CSVC120 x30调试监控器130 x34保留140 x38可挂起的系统服务请求150 x3C系统节拍定时器systick160 x40-0 x3FF
29、IRQ#0 IRQ#239现在学习的是第31页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院2.5 NVIC与中断控制与中断控制 NVIC(Nested Vectored Interrupt Controller)即嵌套向量中断控制器,是Cortex-M3不可分离的一部分,它与CORTEX-M3内核的逻辑紧密耦合,共同完成对中断的响应。NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU、SysTick定时器以及调试控制相关的寄存器。NVIC共支持1至240个外部中断输入(通常外部中断写作IRQ)。具体的数值由芯片
30、厂商在设计芯片时决定。此外,NVIC还支持一个不可屏蔽中断NMI(NonMaskable Interrupt)输入。NMI的实际功能亦由芯片制造商决定。在某些情况下,NMI无法由外部中断源控制。NVIC的访问地址是0 xE000E000。所有NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外软件触发中断寄存器可以在用户级下访问以产生软件中断。现在学习的是第32页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院中断的使能与禁止中断的使能与禁止名称类型地址复位值描述SETENA0R/W0 xE000E1000中断0-31的使能寄存器,共32个使能位SETENA
31、1R/W0 xE000E1040中断32-63的使能寄存器,共32个使能位.SETENA7R/W0 xE000E11C0中断224-239的使能寄存器,共16个使能位CLRENA0R/W0 xE000E1800中断0-31的禁止寄存器,共32个禁止位位n,中断#n禁止(异常号16+n)CLRENA1R/W0 xE000E1840中断32-63的禁止寄存器,共32个禁止位.CLRENA7R/W0 xE000E19C0中断224-239的禁止寄存器,共16个禁止位现在学习的是第33页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院中断的中断的挂起挂起与与解挂解挂名称类型地址复
32、位值描述SETPEND0R/W0 xE000E2000中断0-31的挂起寄存器,共32个挂起位位n,中断#n挂起(异常号16+n)SETPEND1R/W0 xE000E2040中断32-63的挂起寄存器,共32个挂起位.SETPEND7R/W0 xE000E21C0中断224-239的挂起寄存器,共16个挂起位CLRPEND0R/W0 xE000E2800中断0-31的解挂寄存器,共32个解挂位位n,中断#n解挂(异常号16+n)CLRPEND1R/W0 xE000E2840中断32-63的解挂寄存器,共32个解挂位.CLRPEND7R/W0 xE000E29C0中断224-239的解挂寄存器
33、,共16个解挂位现在学习的是第34页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院中断中断优先级优先级寄存器寄存器名称类型地址复位值描述PRI_0R/W0 xE000E4000(8位)外中断#0的优先级PRI_1R/W0 xE000E4010(8位)外中断#1的优先级.PRI_239R/W0 xE000E4EF0(8位)外中断#239的优先级每个外部中断都有一个对应的优先级寄存器,每个寄存器占用8位,但是Cortex-M3允许只使用最高3位。4个相临的优先级寄存器拼成一个32位寄存器。如前所述,根据优先级组的设置,优先级可以被分为高低两个位段,分别是抢占优先级和亚优先级
34、。优先级寄存器都可以按字节访问,当然也可以按半字/字来访问。有意义的优先级寄存器数目由芯片厂商实现的中断数目决定。现在学习的是第35页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院中断中断建立建立过程过程1.当系统启动后,先设置优先级组寄存器。缺省情况下使用组0(7位抢占优先级,1位子优先级)。2.如果需要重定位向量表,先把硬故障和NMI服务例程的入口地址写到新向量表项所在的地址中。3.配置向量表偏移量寄存器,使之指向新的向量表(如果有重定位的话)4.为该中断建立中断向量。因为向量表可能已经重定位了,需要先读取向量表偏移量寄存器的值,再根据该中断在表中的位置,计算出对应
35、的表项,再把服务例程的入口地址填写进去。如果一直使用ROM中的向量表,则无需此步骤。5.为该中断设置优先级。6.使能该中断表。现在学习的是第36页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院响应过程:1、入栈:依次把xPSR、PC、LR、R12以及R3-R0由硬件自动压入适当的堆栈中;2、取向量:从向量表中找出正确的异常向量(服务程序的入口地址),然后在服务程序的入口处预取指;3、更新寄存器:SP堆栈指针更新到新的位置、IPSR位段的值为新响应的异常编号、PC指向服务程序的入口地址、LR的值赋为异常返回地址。返回过程:1、出栈:出栈顺序与入栈时的相对应,堆栈指针的值也
36、改回先前的值;2、更新NVIC寄存器。中断中断/异常的响应和返回异常的响应和返回现在学习的是第37页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院 系统节拍定时器SysTick是Cortex-M3的主要组成部分。系统节拍定时器专为操作系统或其它的系统管理软件提供10毫秒的间隔中断。SysTick定时器被捆绑在NVIC中,用于产生SysTick异常(异常号:15)。SysTick定时器是一个24位定时器,当计数值达到0时产生中断。SysTick的时钟信号可以由CPU提供也可以由外部引脚STCLK提供。要想在规定的时间点上产生中断(循环产生),就必须先将指定的时间间隔值装入
37、STRELOAD。默认时间间隔保存在寄存器STCALIB中,软件可修改该值。SysTick定时器定时器现在学习的是第38页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院SysTick定时器定时器现在学习的是第39页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院STCTRL系统定时器控制和状态寄存器系统定时器控制和状态寄存器 位符号描述复位值0ENABLE系统节拍计数器使能。为1时,计数器使能;为0时计数器禁止。01TICKINT系统节拍中断使能。为1时,系统Tick中断使能。为0时,系统节拍中断被禁止。使能时,中断在计数器达到0时产生。02CLK
38、SOURSE系统节拍时钟源的选择。为1时,CPU被选定;为0时,外部时钟引脚(STCLK)被选中115:3-保留,用户软件不应向保留位写入1,从保留位读出的值未定义。NA16COUNTFLAG系统节拍计数器标志。当计数器达到0时该标志置位,读取该寄存器时高标志被清除。031:17-保留,用户软件不应向保留位写入1,从保留位读出的值未定义。NA现在学习的是第40页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院STRELOAD和和STCURR寄存器寄存器 现在学习的是第41页,共42页桂林桂林电电子科技大子科技大学学信息信息与与通信通信学学院院STCALIB系统定时器校准值
39、寄存器系统定时器校准值寄存器 位符号描述复位值23:0TENMS在系统频率为100MHz时重载可产生10毫秒的系统节拍溢出率的值。该值在复位时会被初始化成厂商为LPC1700系列Cortex-M3微控制器特定的值。TENMS、SKEW和NOREF仅在时钟源为CPU或外设STCLK(100MHz)时才使用。0 x0F423F29:24-保留,用户软件不应向保留位写入1,从保留位读出的值未定义。NA30SKEW显示TENMS是否会准确地产生10毫秒时间间隔的中断或接近10毫秒间隔的中断。该值在复位时会被初始化成厂商为LPC1700系列Cortex-M3微控制器特定的值。031NOREF显示是否有可用的外部参考时钟。该值在复位时会被初始化成厂商为LPC17xx系列ARM特定的值。0现在学习的是第42页,共42页