首页 > 其他分享 >【无标题】STM32 的中断系统

【无标题】STM32 的中断系统

时间:2024-10-09 12:47:13浏览次数:3  
标签:NVIC 优先级 中断 无标题 STM32 打断 抢占 CPU

  1.    中断概述

  2.  在主程序运行过程中, 出现了特定事件, 使得 CPU 暂停当前正在运行的程序, 转而去 处理这个事件, 等这个事件处理完成之后, CPU 再回到刚才被打断的位置继续处理, 这就 是中断。 那个打断 CPU 执行的特定事件, 我们一般称之为中断源。 被中断源打断的位置我们称 为断点。 处理特定事件的过程, 我们称为执行中断处理程序。

  3. eeaa3f72d7204c35af4931968ed1c0d8.jpg

     正在执行中断程序的时候, 这个时候有可能被另外一个中断源给中断, CPU 转而去执 行另外一个中断源的中断处理程序, 这叫中断嵌套。 中断 B 能否打断中断 A , 要看他们的优先级, 优先级高的可以打断优先级低的, 优先 级低的无法打断优先级高的。

  4. 2fbccf251958476a80c3c706be890828.jpg

      中断源可以是外部的, 也可以是内部的。 外部的叫外部中断源, 内部的叫内部中断源 ( 内部的中断有时候也叫异常)。 

  5. 为什么需要中断 对单片机系统来说, 中断至关重要。 比如我们要检测按键是否按下, 如果没有中断, 则需要循环的方式不断的去检测按键 对应的 IO 口的电平, 这是比较耗费 CPU 的时间的。 如果要检测的更多的话, CPU 有可能 会导致阻塞。 有了中断事情就变的简单了, 主程序不需要循环不断的去检测按键, 当有按键按下的 时候, CPU 执行被打断, 去执行按键处理程序就行了。 当没有按键按下的时候, CPU 完全 可以正常执行代码, 丝毫不受任何的影响。

 2.STM32 的中断体系架构

嵌套向量中断控制器

     NVIC 的介绍 NVIC ( Nested vectored interrupt controller 嵌套向量中断控制器)和处理器核的接口紧 密相连, 可以实现低延迟的中断处理和高效地处理中断。 嵌套向量中断控制器管理着包括 内核异常, 外部中断等所有中断。 由 NVIC 决定哪个中断的处理程序交给 CPU 来执行。 每一个外部中断都可以被使能或者禁止, 并且可以被设置为挂起状态或者清除状态。 处理器的中断可以是电平形式的, 也可以是脉冲形式的, 这样中断控制器就可以处理任何 中断源。 1 6 个 IO 的中断与 PVD( 电源电压检测 ) , RTC( 实时时钟 ) , USB , 以太网检测这 20 个 外部中断会通过 EXTI 来控制, 然后交给 NVIC 。 其他中断都是直接交给 NVIC 来处理。

 中断优先级

 NVIC 为了方便管理中断, 可以通过软件给每个中断设置优先级。 NVIC 用 4 个位来控 制优先级, 值小的优先级高。 把优先级分为两 种: 抢占优先级和响应优先级。                     规则:1.优先级值越小, 优先级越高。               2. 如果不设置优先级, 则默认优先为 0 。         3. 先比较抢占优先级。 抢占优先级高的可以打断抢占优先级低的。                                        4.若抢占优先级一样, 再比较响应优先级。 但是响应优先级不会导致中断嵌套。                   5. 若抢占优先级一样的同时挂起, 则优先处理 响应抢占优先级高 的。                              6.若挂起的优先级(抢占和响应)都一样, 则查找中断向量表, 值小的先响应。 

NVIC 对优先级分了 5 组, 在程序中先对中断进行分组, 而且分组只能分一次, 若多 次分, 只有最后一次生效。 

cf93e31f399049fb9dffc7e3a2d0190b.jpg 

782c8c276e4f4174adaad350fd34eff5.jpg

 

 3.软件设计( HAL 库)

 STM32CubeMX 配置 f5244af3e9884e73b76e988f33c07f9c.jpg

1.添加中断处理函数

2931f95a682942dc89f2c3f92a79abc9.jpg

 fc28138ac79246b78f252f16e770262d.jpg

 

 

标签:NVIC,优先级,中断,无标题,STM32,打断,抢占,CPU
From: https://blog.csdn.net/herderl/article/details/142774134

相关文章

  • STM32学习——IIC
    目录IIC总线协议IIC前置介绍IIC硬件软件区别IIC总线拓扑图IIC协议IIC协议时序代码编写起始信号​编辑停止信号检测应答信号发送应答信号发送非应答信号发送1字节数据读取1字节数据AT24C02简介AT24C02xx系列通讯地址AT24C02读写时序AT24C02驱动步骤配置I......
  • STM32入门教程:身份证识别
    STM32入门教程:身份证识别身份证识别是一种常见的图像处理应用,利用STM32等嵌入式平台进行身份证识别可以实现快速、准确的身份信息提取。本文将详细介绍如何使用STM32进行身份证识别,并提供代码案例供参考。一、身份证识别原理身份证识别主要涉及图像处理和模式识别两个方面。......
  • 如何入门STM32单片机编程
    入门STM32单片机编程需要掌握以下内容:STM32的基本概念和特点:了解STM32系列单片机的特点、硬件结构、功能模块以及常用的开发工具和资源。KeilMDK开发环境的安装和使用:KeilMDK是一款非常常用的STM32开发工具,通过安装和配置KeilMDK,可以进行STM32的编译、下载和调试操作。......
  • 使用STM32实现简单的智能红绿灯
    要实现简单的智能红绿灯系统,首先需要了解STM32的基本知识和使用方法。STM32是一款基于ARMCortex-M内核的32位微控制器系列,提供了广泛的外设和功能,非常适合用于嵌入式系统开发。在这个案例中,我们将使用STM32来控制一个交通灯系统,该系统可以智能地根据车辆流量和道路状况来调整......
  • 【WCH以太网接口系列芯片---CH395】STM32+CH395评估板应用测试
    本篇文章基于WCH沁恒的以太网接口芯片CH395Q进行TCP、UDP数据传输验证测试,主控为STM32F103ZET6+CH395QDemo板。功能初步验证:使用USB转串口模块+CH395Q初步验证通讯,测试软件为DEBUG395。接线:U转串模块和CH395Q的RXTX交叉连接,VIN--5V,GND-GND,CH935Q网口用网线直连电脑。DEB......
  • 20 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于STM32F103C8T6采用DHT11读取温度、滑动变阻器模拟读取电流、电压。通过OLED屏幕显示,设置电流阈值为80,电流小阈值为50,电压阈值为60,温度阈值为30随便哪个超过预祝,则继电器切断,LED灯灭掉,若电流......
  • STM32的时钟复位控制单元(RCU/RCC)技术介绍
    在嵌入式系统开发中,时钟管理和复位控制是确保微控制器稳定运行的关键因素。时钟复位控制单元(ResetandClockControl,RCU/RCC)是STM32系列微控制器中的一个重要外设,负责管理系统的时钟源、分频器、外设时钟以及复位功能。本文将详细介绍STM32的RCU/RCC技术,包括其主要......
  • STM32的SPI技术介绍
    SPI(SerialPeripheralInterface,串行外设接口)是STM32微控制器中常用的高速同步串行通信协议之一。它广泛应用于与各种外设(如传感器、显示屏、存储器等)的数据交换。本文将详细介绍STM32的SPI技术,包括其基本概念、工作原理、配置方法及实际应用。一、SPI简介1.1什么是SPISPI......
  • 5、在设备树中指定中断——在代码中获取中断
    1设备树里中断节点的语法参考文档:内核Documentation\devicetree\bindings\interrupt-controller\interrupts.txt设备树里的中断控制器中断的硬件框图如下: 在硬件上,“中断控制器”只有GIC这一个,但是我们在软件上也可以把上图中的“GPIO”称为“中断控制器”。很多芯片有多......
  • 4、Linux中断系统中的重要数据结构
    本节内容,可以从request_irq(include/linux/interrupt.h)函数一路分析得到。能弄清楚下面这个图,对Linux中断系统的掌握也基本到位了 最核心的结构体是irq_desc,之前为了易于理解,我们说在Linux内核中有一个中断数组,对于每一个硬件中断,都有一个数组项,这个数组就是irq_desc......