2-ARM-Cortex-M体系结构[66页]课件_第1页
2-ARM-Cortex-M体系结构[66页]课件_第2页
2-ARM-Cortex-M体系结构[66页]课件_第3页
2-ARM-Cortex-M体系结构[66页]课件_第4页
2-ARM-Cortex-M体系结构[66页]课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第2章 ARM Cortex-M体系结构2.1 ARM Cortex体系概述2.2 Cortex-M4内核基础2.3 存储器系统2.4异常和中断习题2.1 ARM Cortex体系概述2.1 ARM Cortex体系概述ARM公司在经典处理器ARM11以后的产品都改用Cortex命名,主要分成A、R和M三类,旨在为各种不同的市场提供服务,A系列处理器面向尖端的基于虚拟内存的操作系统和用户应用;R系列处理器针对实时系统;M系列处理器针对微控制器。2.1 ARM Cortex体系概述指令的强弱是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构来讲,指令集可分为复杂

2、指令集(CISC)和精简指令集(RISC)两部分。2.1.1 CISC和RISC1CISC机器CISC体系的指令特征为使用微代码,计算机性能的提高往往是通过增加硬件的复杂性来获得的。优点:指令丰富,功能强大,寻址方式灵活,能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。缺点:指令集及晶片的设计比上一代产品更复杂,不同的指令需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。2.1 ARM Cortex体系概述2.1.1 CISC和RISC2RISC机器RISC体系的指令特征:RISC包含简单、基本的指令,这些简单、基本的指令可以组合成复杂指令。优点

3、:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度是CISC系统的运行速度的24倍。由于RISC处理器的指令集是精简的,它的存储管理单元、浮点单元等都能设计在同一块芯片上。缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC处理器需要更快的存储器,并将其集成于处理器内部,如一级缓存(L1 Cache)。2.1 ARM Cortex体系概述2.1.1 CISC和RISC3RISC和CISC比较项目RISCCISC指令系统简单、精简复杂、丰富指令数目一般小于100条一般大于200条指令格式少多寻址方式少多指令字长基本等长不固定可访存

4、指令主要是Load/Store不加限制各种指令使用频率相差不大相差很大各种指令执行时间大部分单周期相差很大优化编译实现较容易难表2-1RISC和CISC特点对比2.1 ARM Cortex体系概述1985年,Roger Wilson和Steve Furber设计了第一代32位、6MHz的处理器,做出了一台RISC指令集的计算机,简称ARM(Acorn RISC Machine)ARM的由来。1990年,Acorn公司正式改组为ARM计算机公司。ARM公司生产的芯片,称为ARM芯片。ARM公司的业务一直是出售IP核。ARM控股的ARM处理器家庭的突出例子包括ARM7, ARM9, ARM11 a

5、nd Cortex-M,Cortex-A系列 。2.1.2 ARM架构发展史ARM推出新款ARMv8架构。包括Cortex-A53、Cortex-A57、 Cortex-A73、 Cortex-A75 、 Cortex-A76等处理器。ARM处理器架构发展进程2.1 ARM系统概述2.1.2 ARM架构发展史2.1 ARM系统概述2.1.3 ARM体系结构类型ARM处理器分为6类:Cortex-A系列处理器、Cortex-R系列处理器、Cortex-M系列处理器、Machine Learning系列处理器、SecurCore系列处理器、Neoverse系列处理器。项目Cortex-A系列处理器

6、Cortex-R系列处理器Cortex-M系列处理器设计特点高时钟频率,长流水线,高性能,对媒体处理支持(NEON指令集扩展)高时钟频率,较长的流水线,高确定性(中断延迟低)较短的流水线,超低功耗系统特性内存管理单元(MMU),cache memory,ARM TrustZone安全扩展内存保护单元(MPU),cache memory,紧耦合内存(TCM)内存保护单元(MPU),嵌套向量中断控制器(NVIC),唤醒中断控制器(WIC),最新ARM TrustZone安全扩展目标市场移动计算、智能手机、高能效服务器、高端微处理器工业微控制器、汽车电子、硬盘控制器微控制器、深度嵌入系统(如传感器、

7、MEMS、混合信号IC、IoT)表2-2Cortex系列处理器的主要特征2.1 ARM系统概述2.1.3 ARM体系结构类型图2-1Cortex系列处理器发展历程简图2.1 ARM系统概述2.1.4 Cortex-M系列处理器表2-2Cortex系列处理器的主要特征处理器主要特性Cortex-M0处理器面向低成本,超低功耗的微控制器和深度嵌入应用的非常小的处理器(最小12K门电路)Cortex-M0+处理器针对小型嵌入式系统的最高能效的处理器,尺寸大小和编程模式与Cortex-M0处理器相近,但是具有扩展功能,如单周期I/O接口和向量表重定位功能Cortex-M1处理器针对FPGA设计优化的小

8、处理器,利用FPGA上的存储器块实现了紧耦合内存(TCM)和Cortex-M0处理器有相同的指令集Cortex-M3处理器针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持可以处理器快速处理复杂任务的丰富指令集,具有硬件除法器和乘加指令(MAC)。并且,由于Cortex-M3处理器支持全面的调试和跟踪功能,软件开发者可以快速地开发他们的应用2.1 ARM系统概述2.1.4 Cortex-M系列处理器表2-2Cortex系列处理器的主要特征-续处理器主要特性Cortex-M4处理器不但具备Cortex-M3处理器的所有功能,而且扩展了面向数字信号处理(DSP)的指令集,如单指令多数据指令(

9、SMID)和更快的单周期MAC操作。此外,它还有一个可选的支持IEEE754浮点标准的单精度浮点运算单元Cortex-M7处理器针对高端微控制器和数据处理密集的应用开发的高性能处理器,具备Cortex-M4处理器支持的所有指令功能,扩展支持双精度浮点运算,并且具备扩展的存储器功能,如Cache和紧耦合存储器(TCM)Cortex-M23处理器面向超低功耗、低成本应用设计的小尺寸处理器,和Cortex-M0处理器相似,但是支持各种增强的指令集和系统层面的功能特性。Cortex-M23处理器还支持TrustZone安全扩展Cortex-M33处理器主流的处理器设计,与之前的Cortex-M3处理器

10、和Cortex-M4处理器类似,但系统设计更灵活,能耗比更高效,性能更高。Cortex-M33处理器还支持TrustZone安全扩展2.2 Cortex-M4内核基础2.2 Cortex-M4内核基础Cortex-M4处理器已设计具有适用于数字信号控制市场的多种高效信号处理功能。Cortex-M4处理器采用扩展的单周期MAC指令、优化的SIMD指令、饱和运算指令和一个可选的单精度浮点单元(FPU)。硬件体系结构单周期16位、32位MAC用于指令提取的32位AHB-Lite接口用于数据和调试访问的32位AHB-Lite接口大范围的MAC32位或64位累加选择指令在单个周期中执行单周期SIMD单周

11、期双16位MAC4路并行8位加法或减法2路并行16位加法或减法指令在单个周期中执行2路并行16位MAC32位或64位累加选择指令在单个周期中执行浮点单元其他符合IEEE 754标准单精度浮点单元用于获得更高精度的融合MAC饱和数学桶形移位器表2-4Cortex-M4系列处理器数字信号处理功能图2-2Cortex-M4系列微控制器内部构造基于Cortex-M3/M4的微控制器芯片2.2 Cortex-M4内核基础2.2 Cortex-M4内核基础32-bit微控制器: 32-bit 寄存器组、存储器接口。哈佛架构:独立的指令总线和数据总线。存储空间:4GB。寄存器:寄存器 (R0 到 R15)

12、和 特殊功能寄存器。运行模式:线程模式和处理模式;特权级和用户级。中断和异常:内置嵌套向量中断控制器;支持11 种系统异常外加240 种外部 IRQ。总线接口:若干总线接口允许 Cortex-M4 同时取指令和取数据。MPU:一个可选的存储器保护单元允许对特权访问和用户程序访问制定访问规则。指令集:Thumb-2 指令集;允许 32位指令和16位指令被同时使用。内部调试组件:提供在线调试功能,例如:断点、单步、变量查看。2.2.1 寄存器组r0r12 ,为13个通用目的寄存器 低组寄存器 , r0-r7可以被指定通用寄存器的所有指令访问 高组寄存器 , r8-r12可以被指定通用寄存器的所有3

13、2位指令访问 ,16位Thumb指令不能访问它们,32位的Thumb2指令则不受限制。 2.2 Cortex-M4内核基础1、R0-R122、R13,两个堆栈指针处理模式线程模式可用 MSP始终使用主堆栈指针(MSP)也可用进程堆栈指针(PSP)2.2 Cortex-M4内核基础主堆栈和进程堆栈Cortex-M3内核有两个堆栈指针:MSP和PSP结束复位后,所有代码都使用主堆栈 所有异常都使用主堆栈 异常处理程序(例如SVC)可以通过改变其在退出时使用的EXC_RETURN值来改变线程模式使用的堆栈。在线程模式中,使用MSR指令对CONTROL1执行写操作也可以从主堆栈切换到进程堆栈。 堆栈指

14、针r13是分组寄存器,在SP_main和SP_process之间切换。在任何时候,进程堆栈和主堆栈中只有一个是可见的,由r13指示。 2.2 Cortex-M4内核基础2、R13,两个堆栈指针堆栈与微控制器模式的对应关系2.2 Cortex-M4内核基础通过MSR指令修改CONTROL1进行堆栈切换CONTROL1主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回进行堆栈切换,MSR指令切换用的极少。2、R13,两个堆栈指针CONTROL 1 = 0: 使用MSP线程模式 handler模式 线程模式(使用MSP) (使用MSP) (使用MSP)线程模式 handler模式 线程模式(使用P

15、SP) (使用MSP) (使用PSP)CONTROL 1 = 1: 线程模式使用PSPHandler模式使用MSP2.2 Cortex-M4内核基础2、R13,两个堆栈指针int main ( ) . delay( ); SetLED1( );void delay( ) .BL delaydelay: . BX LR .0X20F00X20F4地址0X10F40X10F4执行BL指令,LR的值同时更新(0X20F4)2.2 Cortex-M4内核基础3、链接寄存器(LR)C代码汇编代码程序计数器 (PC)程序计数器 总是指向正在取指的指令。该寄存器的位0始终为0,因此,指令始终与字或半字边界对

16、齐。 2.2 Cortex-M4内核基础4、 程序寄存器(PC)R15 是程序计数器。可以在汇编语言中通过R15或PC访问。2.2 Cortex-M4内核基础2.2.2 堆栈操作1栈的作用(1)用于在正在执行的函数需要使用寄存器(寄存器组)进行数据处理时,临时存储数据的初始值,这些数据在函数结束时可以被恢复出来,以免调用函数的程序丢失数据。(2)用于函数或子程序中的信息传递。(3)用于存储局部变量。(4)用于在中断等异常产生时保存处理器状态和寄存器数值。 满递减堆栈。 满递增堆栈。 空递增堆栈。 空递减堆栈。四种类型:2.2 Cortex-M4内核基础默认:满递减堆栈2、入栈3、出栈2.2.2

17、 堆栈操作链接寄存器 (LR) 在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。 主要用于保存子程序的 返回地址。 LR也用于异常返回。 2.2 Cortex-M4内核基础3、 链接寄存器(LR)2.2.3 特殊功能寄存器2.2 Cortex-M4内核基础在Cortex-M3/M4处理器中的特殊寄存器包括: 1. 程序状态寄存器 (PSRs)2. 中断屏蔽寄存器(PRIMASK, FAULTMASK, and BASEPRI)3. 控制寄存器 (CONTROL)1 程序状态寄存器 (PSRs)313029282726:252423

18、:2019:1615:10987654:0 xPSRNZCVQICI/ITTICI/ITException No.313029282726:252423:2019:1615:10987654:0APSRNZCVQIPSRException No.EPSRICI/ITTICI/IT2.2 Cortex-M4内核基础程序状态寄存器可以分为三个状态寄存器:1. 应用 PSR (APSR) 负、零、进/借、溢、饱和(用于饱和运算)2. 中断 PSR (IPSR)3. 执行 PSR (EPSR) ICI/IT: ICI指令/IT指令状态位;T总为12 中断屏蔽寄存器PRIMASK、FAULTMASK 和

19、 BASEPRI用来开放/禁用异常Cortex-M3/M4 中断屏蔽寄存器寄存器名描 述PRIMASK一个1-bit 寄存器。1:仅允许NMI 和硬件默认异常,所有其他的中断和异常将被屏蔽;0:开放中断FAULTMASK一个1-bit 寄存器。1:仅允许NMI, 所有中断和默认异常处理包括硬件异常被忽略。BASEPRI一个9位寄存器。它定义了屏蔽优先级。 当设置为某值时, 所有大于或等于该值的中断被屏蔽(值越大,优先级越低)。全为0(默认值):不屏蔽任何中断。2.2 Cortex-M4内核基础3 控制寄存器Cortex-M3/M4 控制寄存器位功能CONTROL1堆栈指针选择0=选择主堆栈指针

20、MSP(复位后缺省值)1=选择进程堆栈指针PSP在线程或基础级(没有在响应异常),可以使用PSP。在handler 模式下,只允许使用MSP,所以此时不得往该位写1。CONTROL00=特权级的线程模式1=用户级的线程模式handler 模式永远都是特权级的。2.2 Cortex-M4内核基础被用来定义特权级和堆栈指针的选择。这个寄存器有两位。特权级用户级主堆栈进程堆栈2.3.4 操作模式两种模式和两种特权等级。操作模式决定控制器运行正常程序或运行异常处理程序。特权用户当运行一个异常(中断)程序处理者模式错误的用法当运行主应用程序线程模式线程模式在Cortex-M3/M4中的操作模式和权限级别

21、特权级别提供了一种机制来保障访问存储器的关键区域,同时还提供了一个基本的安全模式。通过写Control register0=1,软件在特权访问级别可以使程序转换到用户访问级别。 用户程序不能够通过写控制寄存器直接变回特权状态。它要经过一个异常处理程序设置Control register0=0使得处理器切换回特权访问级别。2.2 Cortex-M4内核基础特权级用户级线程模式处理器模式工作模式和特权级别处理器模式线程模式特权级用户级始终特权级工作模式用于区别普通应用程序的代码和异常服务例程的代码(包括中断服务例程的代码)特权级别可以提供一种存储器访问的保护机制,使得普通的用户程序代码不能意外地,

22、甚至是恶意地执行涉及到要害的操作。2.2 Cortex-M4内核基础2.3.4 操作模式特权执行可以访问所有资源。 非特权执行时对有些资源的访问受到限制或不允许访问。特权访问和用户访问(非特权访问)的区别用户访问特权访问2.2 Cortex-M4内核基础1 特权级别线程模式线程模式和处理器模式 处理器模式在复位时控制器进入线程模式异常返回时控制器进入线程模式特权和用户(非特权)代码能够在线程模式下运行出现异常时控制器进入处理器模式在处理器模式中,所有代码都是特权访问的2 工作模式2.2 Cortex-M4内核基础CONTROL0特权访问用户访问10控制寄存器的第0位3 特权级和工作模式转换2.

23、2 Cortex-M4内核基础工作模式状态转换特权模式下通过MSR指令修改CONTROL0状态3 特权级和工作模式转换2.2 Cortex-M4内核基础当CONTROL0=0 时,在异常处理的始末,只发生了工作模式的转换。线程模式 handler模式 线程模式(特权级) (特权级) (特权级)线程模式 handler模式 线程模式(用户级) (特权级) (用户级)若CONTROL0=1(线程模式+用户级),则在中断响应的始末,工作模式和特权等极都要发生变化。2.2 Cortex-M4内核基础3 特权级和工作模式转换2.3 存储器系统2.3 存储器系统Cortex-M4内核的存储器系统的主要特性

24、如下:(1)可寻址4GB线性地址物理空间。(2)支持小端和大端的存储器系统。Cortex-M4处理器可以选择使用小端或者大端的存储器系统。(3)位段访问。(4)写缓冲。对可缓冲存储器区域写操作需要花费几个周期时间,Cortex-M4处理器的写缓冲可以把写操作缓存起来,因此处理器可以继续执行下一条指令,从而提高了程序的执行速度。(5)存储器保护单元(MPU)。MPU定义了各存储器区域的访问权限,且为可编程。Cortex-M4处理器中的MPU支持8个可编程区域,可在嵌入式操作系统中提高系统的健壮性。Cortex-M4处理器中的MPU是可选的。多数应用不会用到MPU,可以忽略。(6)非对齐传输支持。

25、ARMv7-M架构的所有处理器(包括Cortex-M4处理器)支持非对齐传输。2 存储器格式字节字节字节字节A+3A+2A+1A存储器半字半字字Cortex-M4处理器支持以下数据类型:32位字、16位半字、8位字节。2.3 存储器系统2.3.1 数据类型存储器介质:RAM: SRAM和DRAMROM: ROM、PROM、EPROM、EEPROMFLASH: NOR FLASH、NAND FLASH2 存储器格式字节字节字节字节A+3A+2A+1A存储器半字半字字存储器介质RAM SRAM和DRAMROM ROM、PROM、EPROM、EEPROMFLASH NOR FLASH、NAND FL

26、ASH2.3 存储器系统小端存储A+3A+2A+1A存储器0 x120 x340 x560 x78A+3A+2A+1A存储器0 x780 x560 x340 x122.3 存储器系统大端存储0 x12345678存储器地址存储器地址2.3.2 存储形式Cortex-M4 处理器有一个固定的存储映射。这一点极大地方便了软件在各种M4 微控制器间的移植。例:各款M4微控制器的NVIC 和MPU 都在相同的位置布设寄存器,使得它们变得通用。2.3.3 存储器映射2.3 存储器系统Block0Block1Block2Block3-4Block5-6Block7Cortex-M4支持位带操作,可以使用普

27、通的加载/存储指令来对单一的比特进行读写。在Cortex-M4中,有两个区中实现了位带:(1)SRAM区的最低1MB范围(0 x200000000 x20100000)。(2)片内外设区的最低1MB范围(0 x400000000 x40100000)。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区把每个比特膨胀成一个32 位的字。(1)32MB SRAM位带别名区(0 x220000000 x23FFFFFF)。(2)32MB外设位带别名区(0 x420000000 x43FFFFFF)。它们可以通过一个单独的被称为bit-band alias的

28、存储区域被访问。2.3 存储器系统2.3.4 位带区位通过Bit-Band Alias访问Bit-Band Region 2.3 存储器系统位带别名区SRAM位带区位带别名区中的字与位带区的位映射公式bit_word_addr = bit_band_base + (byte_offset x 32) + bit_number 42.3 存储器系统例如:SRAM 位带区中地址为 0 x20000300 的字节中的位 2 被映射到别名区中的地址为:0 x22006008(= 0 x22000000 + (0 x300*32) + (2*4))的字。76543210位带区别名区一个存储单元的8个位一

29、个字(4个字节)0 x200003000 x22006008一个字(4个字节)0 x22006004SRAM 区域的Bit-Band 地址重映射外设存储区 Bit-Band 地址重映射 Bit-Band 区域 别名等效0 x20000000 bit00 x22000000 bit00 x20000000 bit10 x22000004 bit00 x20000000 bit20 x22000008 bit00 x20000000 bit310 x2200007C bit00 x20000004 bit00 x22000080 bit00 x20000004 bit310 x220000FC b

30、it00 x200FFFFC bit310 x23FFFFFC bit0Bit-Band 区域 别名等效0 x40000000 bit00 x42000000 bit00 x40000000 bit10 x42000004 bit00 x40000000 bit20 x42000008 bit00 x40000000 bit310 x4200007C bit00 x40000004 bit00 x42000080 bit00 x40000004 bit310 x420000FC bit00 x400FFFFC bit310 x43FFFFFC bit02.3 存储器系统#define BITB

31、AND(addr, bitnum) (addr &0 xF0000000)+0 x2000000+(addr &0 xFFFFF)5)+(bitnum2)#define MEM_ADDR(addr) *(volatile unsigned int*)(adr)MEM_ADDR(BITBAND(DEVICE_REG0,1) = 0 x1;2.3 存储器系统C语言中宏定义位带操作位带操作定义:位带操作定义:#define DEVICE_REG0 0 x40000000(将单元0 x40000000的1位置位)*(volatile unsigned int*) (0 x40000000) |= (0

32、 x000000011);普通操作(读修改写):2.4 异常和中断中断:请求信号来自于CM4内核外面,来自片上外设或外扩的外设;异常:是由于CM4内核的活动而产生的 。只要正常的程序被暂时中止,微控制器就进入处理器模式。包括复位、系统故障、中断等事件。2.4 异常和中断图2-15异常和中断程序状态切换图异常和中断的作用是指示系统中的某个地方发生一些事件,需要引起处理器(包括正在执行的程序和任务)的注意。当中断和异常发生时,典型的结果是迫使处理器将控制从当前正在执行的程序或任务转移到另一个例程或任务中,该例程叫作中断服务程序(ISR),或者异常处理程序。2.4 异常和中断2.4.1 向量表异常类

33、型位置位移向量优先级描述N/A00 x0000初始堆栈指针值N/A在复位时栈顶从向量表的第一个入口加载复位10 x0004重置-3(高)在上电和热复位时调用;在第一条指令上优先级下降到低(线程模式);是异步的不可屏蔽的中断20 x0008NMI-2可以通过一个外设或由软件触发发出信号;不能被除复位之外的任何异常停止或占先;是异步的硬故障30 x000C硬故障-1异常处理期间有错误的异常,或者因为异常不能被任何异常机制管理;是同步的存储器管理40 x0010内存管理故障可调整MPU不匹配,包括违反访问规范及不匹配;即使MPU被禁止或不存在,也可以用它来支持默认的存储器映射的XN区域;是同步的总线

34、故障50 x0014总线故障可调整预取故障、存储器访问故障,以及其他相关的地址/存储故障;精确时是同步的,不精确时是异步的使用故障60 x0018应用故障可调整使用故障,如执行未定义的指令或尝试不合法的状态转换;是同步的表2-11异常类型表2.4 异常和中断2.4.1 向量表异常类型位置位移向量优先级描述N/A7:10N/A重置N/A保留SVCall11N/ASVCall可调整利用SVC指令调用系统服务,在操作系统环境下,应用程序可以使用SVC指令来访问操作系统内核函数和器件驱动;是同步的调试监控12N/A保留可调整调试监控,在处理器没有停止时出现;是同步的,但只在使能时是有效的;如果它的优先

35、级比当前有效的异常的优先级要低,则不能被激活13N/A保留N/A保留PendSV14N/APendSV可调整可挂起的系统服务请求;在操作系统环境下,使用PendSV作为背景切换时,没有其他异常活动;是异步的,只能由软件来实现挂起SysTick150 x0038SysTick可调整当系统定时器达到零产生,软件也可以生成一个SysTick异常;在操作系统环境下,处理器可以使用该异常作为系统时钟;是异步的表2-11异常类型表-续12.4 异常和中断2.4.1 向量表表2-11异常类型表-续2异常类型位置位移向量优先级描述外部中断16及以上0 x003CIRQ0可调整在内核的外部产生,外围信号或者通过

36、软件请求生成。INTISR239:0,通过NVIC(设置优先级)输入,都是异步的0 x0040IRQ10 x0044IRQ20 x0048IRQ30 x004CIRQ42.4.2优先级2.4 异常和中断1优先级概述所有异常都有其相关的优先级,具有以下特点。(1)一个较低的优先级值,表示较高的优先级;(2)可配置的优先事项为除复位、硬件复位和NMI处的所有异常。在处理器的异常模型中,优先级决定了处理器何时及怎样处理异常。优先级分两组,抢占优先级和响应优先级,程序能够指定中断的优先级。NVIC支持由软件指定的优先级,可以将中断的优先级指定为0255。硬件优先级随着中断号的增加而降低,0优先级高,2

37、55优先级低。指定软件优先级后,硬件优先级无效。2.4.2优先级2.4 异常和中断2优先级分组为了对具有大量中断的系统加强优先级控制,NVIC支持优先级分组机制,分为抢占优先级区和响应优先区。分组位置表示抢占优先级的位段表示亚优先级的位段07:10:017:21:027:32:037:43:047:54:057:65:067:76:07无7:0(所有位)表2-13抢占优先级和亚优先级的表达位数与分组位置的关系2.4.2优先级2.4 异常和中断在大多数实际微控制器中只用到了部分优先级分组。例如,在STM32F429微控制器中对应于中断的8位优先级寄存器(IP)只用到高4位,而低4位保留。这样优先

38、级分组的值只能设置为37。下面通过一个例子来加深对优先级分组的应用。图2-16STM32F429微控制器抢占优先级和次优先级在优先级寄存器中的位数关系假设将STM32F429微控制器优先级分组的值设置为4(从bit 4处分组,57位是占先优先级,04位是次优先级,但是03位保留不用),则可得到3级抢占优先级,且在每个抢占优先级的内部有1个次优先级。STM32F429微控制器抢占优先级和次优先级在优先级寄存器中的位数关系如图2-16所示。2.4.3响应过程注意:LR的值被从新定义并非进入异常程序的地址2.4 异常和中断1、 响应流程2.4.3响应过程2.4 异常和中断2退出异常步骤(1)根据EXC_RETURN指示的堆栈,弹出进入中断时被压栈的八个寄存器。(2)从刚出栈的IPSR寄存器8:0位检测恢复到

温馨提示

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

评论

0/150

提交评论