《STM32讲义2...ppt》由会员分享,可在线阅读,更多相关《STM32讲义2...ppt(87页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 Cotex-M3体系结构体系结构主要内容主要内容CM3微处理器核结构微处理器核结构处理器的工作模式和状态处理器的工作模式和状态寄存器、总线接口寄存器、总线接口存储器的组织与映射存储器的组织与映射指令集、流水线、异常和中断指令集、流水线、异常和中断存储器保护单元存储器保护单元STM32微控制器概述微控制器概述2.1 CM3微处理器核结构微处理器核结构主要内容主要内容CM3微控制器结构微控制器结构CM3微处理器结构微处理器结构CM3微处理器核结构微处理器核结构CM3微处理器特点微处理器特点2.1.1 CM3内核微控制器结构内核微控制器结构 CM3 核核调试模块调试模块外设外设存储器存储
2、器时钟和复位时钟和复位I/O内部总线内部总线CM3 CPU2.1.2 CM3微处理器结构微处理器结构 CM3内核内核2.1.3 CM3微处理器内核结构微处理器内核结构 控制控制逻逻 辑辑 32位位ALU乘法器乘法器除法器除法器NVIC接口接口总线接口总线接口跟踪调试接口跟踪调试接口Thunb解解 码码 器器Thunb-2解解 码码 器器运运算算器器2.1.4 CM3微处理器的特点微处理器的特点 功耗低功耗低 具有门数目少具有门数目少 (价格低)(价格低) 调试成本低调试成本低(多种先进的调试手段)(多种先进的调试手段) 中断延迟短中断延迟短 中断响应快速且支持多级中断嵌套中断响应快速且支持多级
3、中断嵌套 处理器采用先进的处理器采用先进的ARMv7-M架构架构 可裁剪的存储器保护单元(可裁剪的存储器保护单元(MPU) ARMv7-M:Thumb-2 ISA子集,包含所有基本子集,包含所有基本的的16位和位和32位位Thumb-2指令指令 。 只有只有SP是分组的是分组的 ,寄存器集比,寄存器集比ARM7简单简单 。 硬件除法指令,硬件除法指令,SDIV和和UDIV(Thumb-2指令)指令) 处理模式(处理模式(handler mode)和线程模式()和线程模式(thread mode) Thumb状态和调试状态状态和调试状态 可中断可中断-可继续的可继续的LDM/STM、PUSH/P
4、OP指令,指令,实现低中断延迟。实现低中断延迟。 中断时自动保存和恢复处理器状态中断时自动保存和恢复处理器状态 支持支持8位、位、16位和位和32位等非对齐访问。位等非对齐访问。2.1.4 CM3微处理器的特点微处理器的特点-指令方面指令方面 外部中断可配置为外部中断可配置为1240个个 优先级位可配置为优先级位可配置为18位位 中断优先级可动态地重新配置。中断优先级可动态地重新配置。 优先级分组,分为占先中断等级和非占先优先级分组,分为占先中断等级和非占先中断等级。中断等级。 支持末尾连锁(支持末尾连锁(tail-chaining)和迟来)和迟来(late arrival)中断,减少了进出栈
5、时间。)中断,减少了进出栈时间。 处理器状态在进入中断时自动保存,中断处理器状态在进入中断时自动保存,中断退出时自动恢复,不需要多余的指令。退出时自动恢复,不需要多余的指令。 2.1.4 CM3微处理器的特点微处理器的特点-中断方面中断方面 8个存储器区。个存储器区。 子区禁止功能子区禁止功能(SRD),实现对存储器区的,实现对存储器区的有效使用。有效使用。 可使能背景区,执行默认的存储器映射可使能背景区,执行默认的存储器映射属性。属性。 MPU(存储器保护单元)可裁剪(存储器保护单元)可裁剪 2.1.4 CM3微处理器的特点微处理器的特点-存储器保护方面存储器保护方面 AHB标准的标准的IC
6、ode、DCode和系统总线接口和系统总线接口 APB专用外设总线(专用外设总线(PPB)接口)接口 Bit band支持,支持,bit-band的原子写和读访问。的原子写和读访问。 存储器访问对齐存储器访问对齐 写缓冲区,用于缓冲写数据。写缓冲区,用于缓冲写数据。 2.1.4 CM3微处理器的特点微处理器的特点-总线方面总线方面 当内核正在运行、被中止、或处于复位状态时,当内核正在运行、被中止、或处于复位状态时,能对系统中包括能对系统中包括Cortex-M3寄存器组在内的寄存器组在内的所有存所有存储器和寄存器进行调试访问储器和寄存器进行调试访问。 两种调试端口:两种调试端口:2线串行(线串行
7、(SW-DP)口或)口或JTAG(JTAG-DP)口。)口。 Flash地址重载和断点单元地址重载和断点单元(FPB),实现断点和代码实现断点和代码修补。修补。 数据观察点(数据观察点(DWT) 程序指令跟踪宏单元程序指令跟踪宏单元(ITM), 支持支持printf类型的调试类型的调试 可选的嵌入式跟踪宏单元可选的嵌入式跟踪宏单元(ETM), 实现指令跟踪。实现指令跟踪。 跟踪端口单元跟踪端口单元(TPIU), 连接跟踪端口分析仪。连接跟踪端口分析仪。2.1.4 CM3微处理器的特点微处理器的特点-调试方面调试方面ARM7TDMICortex-M3架构架构ARMv4T(冯冯.若依曼若依曼)AR
8、Mv7-M(哈佛哈佛)ISA支持支持Thumb/ARMThumb/Thumb-2流水线流水线3级级3级级+分支预测分支预测中断中断FIQ/IRQ240个物理中断个物理中断中断延时中断延时2442个时钟周期个时钟周期12个时钟个时钟 (末尾连锁仅末尾连锁仅6个个)休眠保护休眠保护无无内置内置存储器保护存储器保护无无8段存储器保护单元段存储器保护单元硬件除法硬件除法无无212个时钟周期个时钟周期运行速度运行速度0.95 DMIPS/MHz1.25 DMIPS/MHz功耗功耗0.28 mW/MHz0.19 mW/MHz面积面积0.62 mm2(仅内核仅内核)0.86 mm2(内核内核+外设外设)2.
9、1.4 CM3微处理器的特点微处理器的特点-与与ARM7TDMI比较比较ARM7TDMI的苦恼执行效率高代码密度低ARM指令执行效率低代码密度高Thumb指令鱼与熊掌不可兼得两者之间的切换相当的麻烦2.2 CM3的工作模式及状态的工作模式及状态访问级别:访问级别:特权级和用户级特权级和用户级出于安全考虑,防止意外、恶意访问出于安全考虑,防止意外、恶意访问破坏重要数据。破坏重要数据。工作模式:工作模式:处理模式和线程模式处理模式和线程模式分别用于处理异常和普通程序分别用于处理异常和普通程序工作状态:工作状态:Thumb状态和调试状态状态和调试状态Thumb状态状态:16位和位和32位位“半字对齐
10、半字对齐”的的Thumb和和Thumb-2指令的执行状态。指令的执行状态。 调试状态调试状态:处理器停止并进行调试的:处理器停止并进行调试的状态。状态。 特权(级)访问和用户(级)访问处理模式线程模式特权访问用户访问始终特权访问特权执行可以访问所有资源。 非特权对有些资源的访问受到限制或不允许访问。 如部分指令 (设置FAULTMASK和PRIMASK的CPS指令 )。 对系统控制空间(SCS)的大部分寄存器的访问。特权访问和用户访问(非特权访问)的区别FAULTMASKPRIMASKSCS用户访问特权访问1. 线程模式CM3处理器支持两种工作模式:线程模式和处理模式 2.处理模式u在复位时处
11、理器进入线程模式u异常返回时处理器进入线程模式u在线程模式下,所有代码可由特权级和用户级访问u出现异常时处理器进入处理模式u在处理模式中,所有代码只能由特权级访问CM3操作模式的转换操作模式的转换线程模式线程模式特权访问特权访问复位复位处理模式处理模式特权访问特权访问异常异常线程模式线程模式用户访问用户访问异常异常异常退出异常退出CONTROL0 = 1CONTROL0 = 0MSR指令置位指令置位CONTROL0 2.4 Cortex-M3的编程模式通过MSR指令修改CONTROL1进行堆栈切换线程模式主堆栈线程模式进程堆栈CONTROL1主堆栈进程堆栈10控制寄存器的第1位一般通过中断返回
12、进行堆栈切换,MSR指令切换用的极少。三种执行模式的比较执行模式进入方式堆栈SP用途特权线程特权线程模式模式1复位复位2在特权处理在特权处理模式下使用模式下使用MSR指令清零指令清零CONTROL0使用使用SP_main:1复位后默认复位后默认2. 在退出特权处理模式前,修改在退出特权处理模式前,修改返回值返回值EXC_RETURN3:0为为0b10013清零清零CONTROL1使用使用SP_process:1在退出特权处理模式前,修改返回值在退出特权处理模式前,修改返回值EXC_RETURN3:0为为0b11012置位置位CONTROL1线程模式线程模式(特权或非(特权或非特权)特权)SP_
13、process多多用于操作系用于操作系统的任务状统的任务状态。态。非特权线非特权线程模式程模式在特权线程模在特权线程模式或特权处理式或特权处理模式下使用模式下使用MSR指令置位指令置位CONTROL0特权处理特权处理模式模式出现异常出现异常只能使用只能使用SP_main特权处理模式特权处理模式SP_main在前后台和操在前后台和操作系统中用于中断状态作系统中用于中断状态2.3 CM3的寄存器的寄存器通用寄存器(通用寄存器(R0R7、R8R12)堆栈指针(堆栈指针(R13)链接寄存器(链接寄存器(R14)程序计数器(程序计数器(R15)程序状态寄存器(程序状态寄存器(APSR、IPSR、EPSR
14、)异常中断寄存器(异常中断寄存器(PRIMASK、FAULTMASK、BASEPRI)控制寄存器(控制寄存器(CONTROL)32位通用寄存器R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSRr0r12 ,为13个通用寄存器 低寄存器低寄存器 , r0-r7可以被指定通用寄存器的所有指令访问 高寄存器高寄存器 , r8-r12可以被指定通用寄存器的所有32位指令访问 ,不能被16位指令访问。 SP_processSP_main分组的堆栈指针(SP)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R1
15、5(PC)XPSRSP_mainSP_process处理模式处理模式线程模式线程模式可用可用 MSP始终使用始终使用 MSP也可用也可用 PSP进程堆栈指针进程堆栈指针主堆栈指针主堆栈指针链接寄存器链接寄存器(LRLR)R0R1R2R3R4R5R6R7R8R9R10R11R12R13(SP)R14(LR)R15(PC)XPSR链接寄存器链接寄存器 (LR) 在执行分支(branch)和链接(BL)指令或带有交换的分支和链接指令(BLX)时,LR用于保存PC的返回地址。 主要用于保存子程序的 返回地址。 LR也用于异常返回。 PCPC和和XPSRXPSRR0R1R2R3R4R5R6R7R8R9R
16、10R11R12R13(SP)R14(LR)R15(PC)XPSR程序计数器程序计数器 (PC)程序计数器 总是指向正在取指的指令。程序状态寄存器程序状态寄存器 (XPSR)用于指示程序的运行状态。特殊 用途程序状态寄存器寄存器名称功能编号APSR应用状态寄存器 0IAPSRAPSR和IPSR的组合1EAPSR APSR和EPSR的组合2XPSRAPSR、EPSR和IPSR的组合3IPSR中断状态寄存器 5EPSR执行状态寄存器 6IEPSRIPSR和EPSR的组合7MSP主堆栈指针8PSP进程堆栈指针9PRIMASK中断屏蔽寄存器16BASEPRI可屏蔽等于和低于某个优先级的中断17BASE
17、PRI_MAXBASEPRI允许设置的最大值18FAULTMASK错误屏蔽寄存器19CONTROL控制寄存器20APSR的位分配 负数或小于标志:1:结果为负数或小于0:结果为正数或大于 零标志:1:结果为00:结果为非0 溢出标志:1:溢出0:没有溢出进位/借位标志:1:进位或借位0:没有进位或借位饱和(sticky saturation)标志 应用状态寄存器应用状态寄存器(APSR)(APSR)31 3029282726 0NZCVQ保留保留中断状态寄存器中断状态寄存器(IPSR)(IPSR)IPSR为当前激活(被响应)的异常的ISR编号。 IPSR的位分配 ISR NUMBER ISR
18、NUMBER 基础级别基础级别 =0=0Reset =1Reset =1NMI =2NMI =2SVCall SVCall 11 11 . .31 98 0保保 留留中断号中断号执行状态寄存器执行状态寄存器(EPSR)(EPSR)为什么需要执行状态寄存器为什么需要执行状态寄存器EPSREPSR? LDM LDM、STMSTM和和If-thenIf-then指令,为多周期指令,指令,为多周期指令,如果在执行以上多周期指令时发生异常,处如果在执行以上多周期指令时发生异常,处理器会暂时停止以上指令的操作,进入异常,理器会暂时停止以上指令的操作,进入异常,这时需要保护现场。这时需要保护现场。LDM指令
19、STEP1STEP2STEP3STEP4异常 异常程序EPSREPSR使用的是使用的是26:24和和15:10位位特殊功能寄存器特殊功能寄存器中断屏蔽寄存器( PRIMASK )相当于中断总开关,为1,所有中断被屏蔽;为0,中断能正常响应。PRIMASK屏蔽所有中断响应中断10只有最低位有效只有最低位有效中断屏蔽寄存器中断屏蔽寄存器BASEPRI 可屏蔽等于和低于某个优先级的中断。 例如,把BASEPRI设置为0X40(即25),则2和2以上优先级的中断被屏蔽,只有0和1优先级的中断不被屏蔽。注: BASEPRI与优先级分组有关,stellaris系列处理器使用高3位来配置。BASEPRI2优
20、先级0优先级1优先级2优先级3优先级4.中断被屏蔽中断被屏蔽中断可响应中断可响应控制寄存器控制寄存器CONTROLCONTROLCONTROL1:0 CONTROL1:0 由两个状态位组成:由两个状态位组成:CONTROL1CONTROL00主堆栈主堆栈特权级特权级1进程堆栈进程堆栈用户级用户级2.4 CM3的总线接口的总线接口主要内容主要内容ARM的总线标准的总线标准CM3的总线结构的总线结构2.4.1 ARM总线标准总线标准ARM微控制器使用的是微控制器使用的是AMBA总线体系结构总线体系结构AMBA(Advanced Microcontroller Bus Architecture)是)
21、是ARM公司公布的总线标准,先进公司公布的总线标准,先进的的AMBA规范定义了三种总线规范定义了三种总线: AHB总线总线(Advanced High-performance Bus):):用于用于连接高性能系统模块连接高性能系统模块。它。它支持突发数据传输支持突发数据传输(不间断的连续传输不间断的连续传输)方式及单个数据传输方式,方式及单个数据传输方式,所有时序所有时序 参考同一个时钟沿。参考同一个时钟沿。 ASB总线总线(Advanced System Bus):):用于用于连接连接高性能系统模块高性能系统模块,它,它支持突发数据传输支持突发数据传输模式。模式。 APB总线总线(Advan
22、ce Peripheral Bus):):是一个是一个简单接口简单接口支持低性能的外围接口支持低性能的外围接口。 第二讲到此22.4.2 CM3总线结构总线结构指令存储区总线指令存储区总线(0 x00 x1fffffff, 两条两条AHB)ICode:传送指令:传送指令DCode:传送数据、调试数据:传送数据、调试数据系统总线系统总线(AHB)访问存储区、片上设备、片外设备访问存储区、片上设备、片外设备访问区域:访问区域:0 x200000000 xdfffffff, 0 xe01000000 xffffffff内部专用外设总线内部专用外设总线(0 xe0000000-0 xe003ffff,
23、 AHB)访问访问CM3内部组件内部组件:NVIC、DWT、FPB、MPU外部专用外设总线外部专用外设总线(0 xe0040000-0 xe00fffff, APB)访问访问CM3外部组件外部组件:ETM、TPIU、ROM表表Cortex-M3模块的内部方框图模块的内部方框图2.5 CM3存储器组织与映射存储器组织与映射主要内容主要内容ARM数据存储格式数据存储格式存储器层次结构存储器层次结构CM3存储器结构存储器结构STM32存储器映射存储器映射ARM数据类型数据类型ARM处理器支持以下处理器支持以下6种数据类型:种数据类型: 字节字节(Byte)数据:数据: 8位位有符号、无符号。有符号、
24、无符号。 半字半字(Halfword)数据数据:16位位有符号、无符号有符号、无符号 字字(Word)数据数据:32位位有符号、无符号有符号、无符号 不要求半字对齐、字对齐。不要求半字对齐、字对齐。2.5.1 ARM数据存储格式数据存储格式2.5.1 ARM数据存储格式数据存储格式 如:如:数据数据0 x12345678的存储情况如下:的存储情况如下: 大端格式大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。低字节则存放在高地址中。 字节地址:字节地址: 3 2 1 0785634122.5.1 ARM数
25、据存储格式数据存储格式小端格式小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。缺省设置为小端格式。字节地址:字节地址: 3 2 1 0 如:如:数据数据0 x12345678的存储情况如下:的存储情况如下:12345678寄存器组寄存器组 访问时间约为几个访问时间约为几个ns。片上片上Cache 832KB,访问时间约为十几个,访问时间约为十几个ns主存储器主存储器 一般为几兆字节一般为几兆字节数数GB 的动态存的动态存 储器
26、,访问时间约储器,访问时间约 50ns。NOR Flash 几兆字节,可以随机读,保存、运几兆字节,可以随机读,保存、运行启动代码、操作系统。行启动代码、操作系统。NAND Flash 几兆字节几兆字节数十数十GB,作用类磁盘,作用类磁盘,保存文件、数据,按扇区读。保存文件、数据,按扇区读。2.5.2 存储器层次结构存储器层次结构CPU寄存器组寄存器组片上片上Cache主存储器主存储器NOR FlashNAND Flash 2.5.3 CM3存储器组织存储器组织 2.5.3 CM3存储器组织(下半部)存储器组织(下半部) 2.5.3 CM3存储器组织(上半部)存储器组织(上半部)NVIC总总线
27、线结结构构2.5.4 STM32总线结构与存储器映射总线结构与存储器映射36MHz72MHz存存储储器器映映射射2.5.4 STM32总线结构与存储器映射总线结构与存储器映射存存储储器器映映射射2.5.4 STM32总线结构与存储器映射总线结构与存储器映射STM32外设外设片上片上SRAM片上片上CODE存存储储器器映映射射2.5.4 STM32总线结构与存储器映射总线结构与存储器映射STM32外设外设片外片外SRAM片外片外SRAM 2.5.5 位绑定操作位绑定操作讨论:讨论:位绑定操作的概念、位绑定操作的区域、位绑定操作的概念、位绑定操作的区域、位绑定区域与位绑定别名区的对应关系位绑定区域
28、与位绑定别名区的对应关系。1、位绑定操作、位绑定操作是把绑定区中的每一位,映射到别名区的一个是把绑定区中的每一位,映射到别名区的一个字,对绑定区的位操作,就变成了别名区的字操作。字,对绑定区的位操作,就变成了别名区的字操作。位绑定别名区的字,仅最低位有效,为映射的位绑定别名区的字,仅最低位有效,为映射的位值,其它位没有意义。位值,其它位没有意义。对位绑定别名区的字,可以直接进行读写操作,对位绑定别名区的字,可以直接进行读写操作,比位绑定区对位的比位绑定区对位的“读读修改修改写写”操作更快、更操作更快、更简单。简单。 2.5.5 位绑定操作位绑定操作2、CM3中支持位绑定操作的区域中支持位绑定操
29、作的区域有两个位绑定区域:有两个位绑定区域:1)片上)片上SRAM中的最低中的最低1MB0 x2000 0000-0 x200f ffff 位绑定区位绑定区对应别名区:对应别名区:0 x2200 0000-0 x23ff ffff (32M)2)片上外设区中的最低)片上外设区中的最低1MB0 x4000 0000-0 x400f ffff 位绑定区位绑定区 对应别名区:对应别名区:0 x4200 0000-0 x43ff ffff (32M) 2.5.5 位绑定操作位绑定操作3、位绑定区与位绑定别名区的对应关系、位绑定区与位绑定别名区的对应关系其关系为:其关系为:bit_word_addr=b
30、it_band_base +(byte_offset32)+(bit_number4)bit_word_addr:对应别名区中字的首地址:对应别名区中字的首地址bit_band_base:别名区的首地址:别名区的首地址(对对SRAM区区为为0 x2200 0000;对设备区为;对设备区为0 x4200 0000)byte_offset:绑定位所在字节的偏移地址:绑定位所在字节的偏移地址bit_number:所绑定的位序号:所绑定的位序号 2.5.5 位绑定操作位绑定操作例如,要求写出例如,要求写出SRAM中地址为中地址为0 x2000 0300字字节单元中的第节单元中的第2位,对应别名区的字首
31、地址。这里:位,对应别名区的字首地址。这里:bit_band_base:为:为0 x2200 0000byte_offset:0 x2000 03000 x2000 0000=0 x300bit_number:为:为2别名字首地址为:别名字首地址为: bit_word_addr=bit_band_base + (byte_offset32)+(bit_number4)=0 x2200 0000 + 0 x30032 + 24= 0 x2200 6008 2.6 CM3的指令集的指令集主要内容主要内容ARM指令集(指令集(32位)位)Thumb指令集(指令集(16位)位)Thumb-2指令集指令
32、集 (16位、位、32位)位)ARM指令的格式指令的格式ARM指令基本的语法格式为:指令基本的语法格式为: S , , Opcode:指令操作助记符指令操作助记符 cond:条件后缀。指令执行的条件条件后缀。指令执行的条件 S:状态后缀。有,其操作影响状态后缀。有,其操作影响cpsr值值 Rd:目标寄存器目标寄存器 Rn:第第1个操作数的寄存器个操作数的寄存器 Operand2: 第第2个操作数个操作数几条指令例子:几条指令例子:ADDS R2,R1,#1SUBNES R2,R1,#0 x20LDR R0,R1 2.6.3 Thumb-2指令集指令集Cortex-M3 部分部分Thumb-2指
33、令指令(子集)(子集) Thumb-2指令集指令集(32和和16位位)2.7 CM3的流水线的流水线3级流水线级流水线取指、译码、执行取指、译码、执行5级流水线级流水线取指、译码、运算取指、译码、运算写存储器、写寄存器写存储器、写寄存器2.8 异常和中断异常和中断主要内容主要内容异常和中断的概念异常和中断的概念嵌套式向量中断控制器嵌套式向量中断控制器中断、异常过程中断、异常过程抢占抢占咬尾咬尾晚到晚到返回返回 2.8.1 异常和中断的概念异常和中断的概念异常概念:异常概念:在正常的程序执行过程中发生非在正常的程序执行过程中发生非正常情况正常情况(包括访问存储器(含取指)失败、遇(包括访问存储器
34、(含取指)失败、遇到未定义指令、执行中断指令、数据溢出、调试到未定义指令、执行中断指令、数据溢出、调试程序、软复位等非正常情况)程序、软复位等非正常情况)使使CPU停止正在执停止正在执行的程序,并转去执行相应的处理程序,这样的行的程序,并转去执行相应的处理程序,这样的情况叫作异常。情况叫作异常。中断:中断:是指各种设备请求是指各种设备请求CPU处理特定的操处理特定的操作,包括传输信息、处理故障等。作,包括传输信息、处理故障等。异常是与程序同步的,中断是异步的随机的。异常是与程序同步的,中断是异步的随机的。异常的处理方法与中断一样,后面不再区分。异常的处理方法与中断一样,后面不再区分。系统异常(
35、中断)什么是异常? 只要正常的程序被暂时中止,处理器就进入异常模式。异常包括复位、系统故障、外设中断等事件 ARM Cortex-M3处理器的所有异常可以通过NVIC(嵌套向量中断控制器)进行控制,通过NVIC可以设置各个异常的优先等级并对异常进行处理。所有异常都在处理器模式(Handler Mode)中处理。 系统异常(中断)Cortex-M3处理器有哪些异常?系统复位、NMI(不可屏蔽中断)、硬件故障、存储器管理、总线故障、使用故障、SVCall(软件中断)、调试监控和IRQ中断等。IRQ中断也分为CortexM3内自带的PendSV(系统服务请求)、SysTick(系统节拍定时器),和与
36、芯片外设相关的外部中断。异常类型表异常类型表异常异常类型类型位位置置优先优先级级描描 述述-0-向量表的第一项,作为栈顶地址向量表的第一项,作为栈顶地址复位复位1-3 (高高) 在上电和热复位时调用。这是异步的。在上电和热复位时调用。这是异步的。不可不可屏蔽屏蔽中断中断2-2不可屏蔽(不可屏蔽(NMI) ,也不会被复位之外,也不会被复位之外的任何异常抢占。可由软件通过的任何异常抢占。可由软件通过NVIC中断控制状态寄存器产生。异步的。中断控制状态寄存器产生。异步的。硬故障硬故障3-1当故障由于优先级或者是可配置的故障当故障由于优先级或者是可配置的故障处理程序被禁能而无法激活时,都会以处理程序被
37、禁能而无法激活时,都会以硬故障的方式激活。同步的。硬故障的方式激活。同步的。存储器存储器管理管理4可调可调MPU不匹配,包括访问冲突和不匹配。不匹配,包括访问冲突和不匹配。是同步的。是同步的。总线总线故障故障5可调可调预取指、存储器访问,即与地址预取指、存储器访问,即与地址/数据数据(代码)相关的故障。精确的总线故障(代码)相关的故障。精确的总线故障是同步的,不精确的总线故障是异步的。是同步的,不精确的总线故障是异步的。异常类型表异常类型表异常异常类型类型位位置置优先优先级级描述描述使用使用故障故障6可调可调使用故障,例如执行未定义的指令或试使用故障,例如执行未定义的指令或试图进行非法的状态转
38、变。这是同步的。图进行非法的状态转变。这是同步的。-7-10-保留。保留。SVCall11可调可调使用使用SWI指令的系统服务调用。同步的。指令的系统服务调用。同步的。调试调试监控器监控器12可调可调调试监控器(当没有暂停调试监控器(当没有暂停(Halt)时)。这时)。这是同步的,但仅在使能时有效。是同步的,但仅在使能时有效。-13-保留。保留。PendSV14可调可调系统服务的可挂起系统服务的可挂起SWI指令。指令。SysTick15可调可调系统节拍定时器中断。这是异步的。系统节拍定时器中断。这是异步的。外中断外中断16-255可调可调中断在中断在ARM Cortex-M3内核之外发出且内核
39、之外发出且通过通过NVIC返回(区分优先级)。这些都返回(区分优先级)。这些都是异步的。是异步的。Cortex-M3 异常有哪些特点?l 自动的状态保存和恢复。处理器在进入ISR之前将状态寄存器和部分寄存器自动压栈,退出ISR之后它们自动出栈,不需要多余的指令。l 自动读取代码存储器或SRAM中包含ISR地址的向量表入口。该操作与状态保存同时执行。l 支持末尾连锁,在末尾连锁中,处理器在两个ISR之间不需要对寄存器进行出栈和压栈操作的情况下处理背对背中断。l 中断优先级可动态重新设置。l Cortex-M3与NVIC之间采用紧耦合(closely-coupled)接口,通过该接口可以及早地对中
40、断和高优先级的迟来中断进行处理。l 中断数目可配置为1240。l 中断优先级的数目可配置为18位(1256级。Stellaris系列单片机只支持8级)。处理模式和线程模式具有独立的堆栈和特权等级。l 使用C/C+标准的调用规范:ARM架构的过程调用标准(PCSAA)执行ISR控制传输。l 优先级屏蔽支持临界区(关中断,使程序不被高优先级异常中断)。异常基于优先级的动作异常基于优先级的动作-抢占抢占用户程序中断1 中断2优先级3 优先级2 中断1中断2压栈压栈出栈出栈产生嵌套产生嵌套 在异常处理程序中,一个新的异常比当前的异常优先级更高,处理器打断当前的流程,响应优先级更高的异常,此时产生中断嵌
41、套。异常基于优先级的动作-咬尾咬尾用户程序中断1 中断2优先级2 优先级3 中断1中断2如果此时中断1 已经完成,不出栈也不压栈,直接跳至中断2程序压栈出栈中断1结束无压栈咬尾也叫末尾连锁咬尾也叫末尾连锁异常基于优先级的动作异常基于优先级的动作-晚到晚到用户程序中断1 中断2优先级3 优先级2 中断1中断2压栈出栈继续压栈迟来出栈中断1的入口地址返 回没有挂起的异常,处理器执行出栈操作,并返回到被压栈的ISR或线程模式。 在响应ISR之后,处理器通过出栈操作自动将处理器状态恢复为进入ISR之前的状态。异常优先级 用户可设置的最高优先级为0号优先级,其仅次于复位,NMI以及硬件故障的第4优先级。
42、注意注意:0号优先级也是所有可调整优先级的默认优先级。如果你将两个或更多的中断指定为相同的优先级(例如优先级全为0),那么它们的硬件优先级(位置编号越高优先级越低)就决定了处理器激活这些中断的顺序(硬件优先级不能嵌套,只是在同时激活时优先响应)。例如,如果PendSV和SysTick的优先级都为0,那么PendSV的优先级更高。 NVIC支持由软件指定的可配置的优先级(称为软件优先级)。通过对中断优先级寄存器的8位PRI_N区执行写操作,来将中断的优先级指定为0255,见中断优先级寄存器。硬件优先级随着中断号的增加而降低。0优先级最高,255优先级最低。指定软件优先级后,硬件优先级无效。 注:
43、软件优先级的设置对复位,NMI,和硬故障无效。它们的优先级始终比外部中断要高。 异常优先级复位复位 非屏蔽中断非屏蔽中断硬故障硬故障 存储器管理存储器管理 总线故障总线故障 使用故障使用故障 SVCall SVCall 调试监控器调试监控器 PendSV PendSV SysTick SysTick 外部中断外部中断 优先级由高到低优先级不可调整优先级可调整优先级分组NVIC支持优先级分组机制。可以使用中断和复位控制寄存器中的PRIGROUP区,将每个PRI_N中的值分为抢占优先级区和次优先级区。抢占优先级称为组优先级。如果有多个挂起异常共用相同的组优先级,则需使用次优先级区来决定同组中的异常
44、的优先级,这就是同组内的次优先级。组优先级和次优先级的结合就是通常所说的优先级。如果两个挂起异常具有相同的优先级,则挂起异常的编号越低优先级越高。这与优先级机制是一致的。 优先级分组优先级分组中断优先级区(PRI_N7:0)7 6 5 4 3 2 1 0PRI_NPRI_N抢占区抢占区次优先区次优先区注意:注意: 修改修改PRIGROUPPRIGROUP区区的值的值 可改可改变抢占区和次优先区的位数。变抢占区和次优先区的位数。中断和复位控中断和复位控制寄存器制寄存器异常进入步骤从向量表读从向量表读SPSP更新更新PCPC加载流水线加载流水线更新更新LRLR读向量表读向量表硬件压栈硬件压栈从向量
45、表读从向量表读SPSP更新更新PCPC加载流水线加载流水线更新更新LRLR读向量表读向量表硬件压栈硬件压栈利用向量表读出的位置更新PC。直到第一条指令开始执行时,才能处理迟来异常。 从向量表指向的位置加载指令。它与寄存器压栈操作同时执行。 LR设置为EXC_RETURN,以便从异常中退出 。在复位时,将SP更新为向量表中第1个字的值。读存储器中的向量表,地址为向量表基址+(异常号*4)。中断函数入口。xPSRxPSR、 PCPC、 LR LR 、 R12R12、 R3R3、 R2R2、 R1R1、 R0 R0 压栈压栈注意:LR的值并非进入异常程序的地址注:以上步骤由硬件自动完成,注:以上步骤
46、由硬件自动完成,仅需仅需1212个时钟周期个时钟周期硬件压栈过程硬件压栈过程当前的当前的SPSPR2R1R3R12LRPCxPSRR0原来的原来的SPSP注:使用进程堆栈时,上下文保存在进程堆栈; 使用主堆栈时,上下文保存在主堆栈中。 压栈操作由硬件保存以上8个数据。异常退出步骤异常退出步骤注:以上步骤由硬件自动完成注:以上步骤由硬件自动完成出栈前的出栈前的SPSPR2R1R3R12LRPCxPSRR0出栈后的出栈后的SPSP异常退出步骤流程异常退出步骤流程返回线程模式返回线程模式用主堆栈用主堆栈出栈内容:出栈内容:PC,xPSR,PC,xPSR,r0,r1,r2,r3,r12,LRr0,r1
47、,r2,r3,r12,LREXC_RETURN3EXC_RETURN3:00选择堆栈选择堆栈=0b1001=0b1001返回线程模式返回线程模式用进程堆栈用进程堆栈=0b1101=0b1101开始返回开始返回咬尾方式咬尾方式进入另一异常进入另一异常有中断挂起?有中断挂起?有有寄存器出栈寄存器出栈无无2.9 存储器保护单元存储器保护单元MPU 可保护可保护8个存储器区个存储器区 每个保护区可分为每个保护区可分为8个大小相同的子区个大小相同的子区 通过对存储区的属性,设置为只读,起到通过对存储区的属性,设置为只读,起到保护作用保护作用 常保护的区域:操作系统内核、中断向量常保护的区域:操作系统内核
48、、中断向量表、关键数据等表、关键数据等l MPUMPU功能可选功能可选2.10 STM32F103微控制器资源微控制器资源 主要内容主要内容STM32F103命名规则命名规则STM32F103内部资源内部资源STM32F103引脚信号引脚信号2.10.1 STM32命名规则命名规则如如: STM32 F 103 C 8 T 6 A xxSTM32:产品系列号,基于:产品系列号,基于ARM的的32位微控位微控制器制器F:产品类型,:产品类型,F通用型、通用型、L超低功耗型超低功耗型103:产品子系列,:产品子系列,100、101、102、105/107C:引脚数目,:引脚数目,T36、C48、R
49、64、V100、Z1448:闪存容量:闪存容量,4、6、8、B、C、D、E:16-512KBT:封装类型:封装类型,H:BGA, T:LQFP, U:VFQFPN6:温度范围,:温度范围,6:-4085,7:-401052.10.2 STM32内部资源内部资源 2.10.2 STM32内部资源内部资源 2.10.2 STM32内部资源内部资源 2.10.2 STM32内部资源内部资源 CM3的工作模式及状态的工作模式及状态工作模式:工作模式:处理模式和线程模式处理模式和线程模式分别用于处理异常和普通程序分别用于处理异常和普通程序工作状态:工作状态:Thumb状态和调试状态状态和调试状态Thumb状态状态:16位和位和32位位“半字对齐半字对齐”的的Thumb和和Thumb-2指令的执行状态。指令的执行状态。 调试状态调试状态:处理器停止并进行调试的状:处理器停止并进行调试的状态。态。 访问级别:访问级别:特权级和用户级特权级和用户级出于安全考虑,防止意外、恶意访问破出于安全考虑,防止意外、恶意访问破坏重要数据。坏重要数据。谢谢大家!
限制150内