首页 > 其他分享 >STM32的中断刨析

STM32的中断刨析

时间:2024-03-03 16:47:44浏览次数:29  
标签:中断 刨析 STM32 处理器 Interrupt 异常

STM32中断刨析

一直以来,学习了 stm32freertos 但在思考 rtos 的任务调度时,涉及到 stm32 的中断就感觉糊里糊涂。本篇记录刨析 stm32 的中断系统。


中断和异常

在STM32微控制器中,中断(Interrupt)和异常(Exception)是两种处理器响应外部事件的机制。它们的区别和联系如下:

区别:

  • 中断(Interrupt):中断是外部事件(例如外部IO的状态变化、定时器溢出等)引起处理器正常执行流程的中断。当一个中断事件发生时,处理器会停止当前正在执行的程序,保存当前的执行环境(比如寄存器状态),然后转移到一个预先定义的中断服务函数(Interrupt Service Routine,ISR)去处理中断。处理完成后,再回到原来的执行流程。
  • 异常(Exception):异常是由于处理器内部的一些特定条件触发的事件,通常表示了处理器无法继续执行当前指令的情况。异常可以分为两种类型:硬件异常(比如除法零、非法指令等)和软件异常(例如系统调用、断言失败等)。当异常发生时,处理器会类似中断一样,暂停当前执行流程,转移到一个特定的异常处理程序(Exception Handler)去处理该异常。
    联系:
  • 中断和异常都是处理器对外部或内部事件的响应机制,都会导致当前执行流程被中断,然后转移到一个特定的处理程序去处理。
  • 在STM32中,中断和异常都可以通过中断向量表(Interrupt Vector Table)来确定相应的处理程序入口地址。
  • 在处理中断和异常时,通常需要保存一些关键的状态信息(比如寄存器状态),以便在处理完后能够恢复原来的执行流程。

F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常外部中断。其中系统异常有 8 个(如果把 ResetHardFault 也算上的话就是 10 个),外部中断有 60个。除了个别异常的优先级被定死外,其它异常的优先级都是可编程的。

向量表

图中灰色部分为系统异常(数了数一共10个),

标签:中断,刨析,STM32,处理器,Interrupt,异常
From: https://www.cnblogs.com/likkoliu/p/18050224

相关文章

  • linux基于STM32CUBE IDE搭建stm32开发环境
    1.安装STM32CUBEMX安装地址https://www.st.com/zh/development-tools/stm32cubemx.html2.安装STM32CUBEIDE安装地址https://www.st.com/zh/development-tools/stm32cubeide.html3.安装烧写相关软件3.1安装openocd方法1:命令安装(不推荐,因为默认安装的是0.10.0,不支持......
  • linux基于clion搭建stm32开发环境
    1.安装开发工具1.1安装stm32cubemx下载地址https://www.st.com/zh/development-tools/stm32cubemx.html1.2安装clion方法1:直接下载clion,下载地址https://www.jetbrains.com/clion/download方法2:通过JetBrainsToolBox下载,JetBrainsToolBox下载地址https://www.j......
  • 对于需要实时处理的代码语句 就用定时器中断模式,实现多线程模式,建议不要用查询模式。
    对于需要实时处理的代码语句就用定时器中断模式,实现多线程模式,建议不要用查询模式。 示例代码1:查看代码#include"delay.h"#include"sysInt.h"#include"intrins.h"charSMGDuan[]={0x5B,0x3F,0x5B,0x66, 0x40,0x40, 0x3F,0x3F}; //2024--MMcharsegDuan[]={0x3F,0......
  • 使用STM32CubeMX创建工程
    1,选择芯片新建工程 2.时钟模块的设置分别设置HSE,LSE,MCO 3.时钟系统配置分别配置PLL,SYSCLK,AHB,APB1,APB2等等,配置修改如下红色标记部分 4.Cortex内核配置分别配置SYS(DEBUG),NVIC(优先级分组) 5.GPIO引脚配置我的板子的原理图的PB5引脚是LED0  6.修改工程配......
  • STM32 | STM32到底是什么?(第一天)
    零基础STM32第一天一、认知STM321、STM32概念STM32:意法半导体基于ARM公司的Cortex-M内核开发的32位的高性能、低功耗单片机。ST:意法半导体M:基于ARM公司的Cortex-M内核的高性能、低功耗单片机32:32位单片机2、STM32开发的产品STM32开发的产品:无人机、扫地机器人、3D打......
  • pod为什么会被驱逐及如何避免pod被驱逐导致的服务中断
    Pod被驱逐的原因主要有以下几点:资源不足:当节点资源(如CPU、内存、存储等)不足以满足Pod的资源需求时,调度器会选择将其中一个或多个Pod驱逐出节点,以便在资源有限的节点上安排新的Pod。超出资源限制:Pod可以指定资源上限,如CPU和内存的限制。如果Pod使用的资源超过了所指定的限制,该Po......
  • Pod中断预算 PodDisruptionBudget(PDB)
    PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护、升级或其他操作时,系统中的Pod不会被意外中断或终止。PDB提供了一种机制,通过限制在给定时间内可以中断的Pod数量,以确保系统的可用性和可靠性。PDB有两个主要的属性:minAvailable:指定在任何给定时间内必须......
  • 关于STM32Fx部分引脚不可以正常输出高低电平的解决办法(不可以正常使用)
    一、概述在一次电路版测试中,发现stm32的部分引脚不可以正常的输出高低电平,刚开始以为是板子没有焊接好所以导致的经过多次的测试,发现电路版没问题。当时就想不清楚了,后面就问学长,还有实验室的学长一起测试。刚开始我们经过测试,认为是SCL的问题,认为在某个地方该引脚被......
  • STM32ADC单通道转换
    STM32ADC单通道转换1.初始化ADC功能初始化主要分三部分,GPIO初始化、ADC模式初始化与NVIC初始化。1.1初始化GPIOvoidADC_GPIO_Config(void)//配置ADC通道引脚{ GPIO_InitTypeDefGPIO_InitStructure;//定义GPIO结......
  • STM32OLED使用
    STM32OLED使用.mdSTM32OLED使用市面上大部分OLED使用SSD1306作为主控芯片,在这里使用STM32F103作为主控芯片,使用IIC总线点亮OLED。1.IIC设置以及初始化共需要引用4个头文件“stm32f10x_rcc.h”,“stm32f10x_gpio.h”,“stm32f10x_i2c.h”,“string.h”voidIIC_init(){RCC_A......