STM32学习笔记之系统异常和中断(原理篇)

发布于:2025-03-31 ⋅ 阅读:(22) ⋅ 点赞:(0)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【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(嵌套向量中断控制器)进行灵活配置,以适应不同的外部设备响应需求

网站公告

今日签到

点亮在社区的每一天
去签到