📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处
文章目录
Cortex - M4 的异常主要分为系统异常和外部中断。系统异常一般是由处理器内部的事件触发的,像复位、不可屏蔽中断等;外部中断则是由外部设备发出的中断请求触发的。对 Cortex - M 系列支持的中断类型进行分类和概括:
类别 | 中断类型 | 英文名称 | 触发条件 | 作用 | 优先级特点 |
---|---|---|---|---|---|
系统异常 | 复位 | Reset | 系统上电、复位引脚触发或看门狗复位等情况 | 是系统启动的起点,初始化系统状态,如设置堆栈指针、初始化向量表、初始化时钟等,让系统进入初始运行状态 | 优先级最高,系统复位时无条件执行 |
不可屏蔽中断 | NMI(Non - Maskable Interrupt) | 通常由硬件故障(如硬件检测到电源即将掉电)、外部关键信号触发 | 处理极其重要且紧急的事件,不能被软件屏蔽,确保关键事件能及时处理 | 优先级仅次于复位异常,在系统运行时一旦触发会立即响应 | |
硬故障 | HardFault | 内存访问错误(如访问未映射的内存地址)、总线错误(如数据传输错误)、执行非法指令(如执行未定义的操作码)等 | 表示系统出现了严重且无法由其他异常处理机制解决的问题,需要开发者重点排查 | 优先级较高,仅次于NMI,会打断正常程序执行 | |
存储器管理故障 | MemoryManagementFault | 访问未定义的内存区域、违反内存访问权限(如对只读内存进行写操作) | 检测和处理与存储器访问相关的错误,保障系统内存的安全和正确使用 | 优先级在系统异常中处于中等水平,用于保护内存访问的合法性 | |
总线故障 | BusFault | 数据传输过程中出现总线错误,如数据传输超时、总线冲突、地址错误等 | 及时发现和处理总线通信方面的问题,保证系统数据传输的稳定性 | 优先级与存储器管理故障类似,确保总线通信正常 | |
使用错误 | UsageFault | 执行不合法的指令(如未对齐的内存访问)、违反处理器的使用规则(如除零错误) | 检测指令执行的合法性,避免程序因非法操作导致不可预期的结果 | 优先级和总线故障相近,保证指令执行的正确性 | |
系统服务调用 | SVCall(System Service Call) | 软件执行特定的SVCall指令触发 | 用于用户程序请求操作系统提供的服务,如任务切换、资源分配、设备驱动调用等 | 优先级相对较低,可由软件控制触发时机 | |
调试监控 | DebugMonitor | 调试模式下,处理器进入调试状态,如执行调试断点指令 | 方便调试器对系统进行监控和调试,开发者可借此排查程序运行问题 | 优先级可配置,一般在调试时按需响应 | |
可挂起的系统服务 | PendSV(Pendable System Service) | 根据系统调度需求,通常用于操作系统任务切换时标记 | 用于实现系统任务的上下文切换,可在合适的时机进行任务切换,避免影响关键任务的执行 | 优先级较低,可被其他高优先级异常打断,适合在系统不太繁忙时进行任务切换操作 | |
系统滴答定时器中断 | SysTick | 系统滴答定时器(SysTick)溢出 | 为操作系统提供时间片调度、延时等功能的时间基准,实现系统的定时功能 | 优先级可配置,常用于操作系统的时间管理 | |
外部中断 | 外部中断线 | EXTI(External Interrupt) | 外部引脚电平变化(上升沿、下降沿或电平变化) | 处理外部设备中断请求,如按键检测、传感器数据采集等 | 优先级可通过NVIC(嵌套向量中断控制器)进行灵活配置,以适应不同的外部设备响应需求 |