中断系统

视频选集(11/50)[5-1] EXTI外部中断

1. 中断简介

  • 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行

  • 中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源

  • 中断嵌套:当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU再次暂停当前中断程序,转而去处理新的中断程序,处理完成后依次进行返回

    一般中断程序都存放在一个函数里,这个函数不需要被手动调用;中断来临时,硬件会自动调用这个函数

    image-20250806180207614

2. STM32中断

  • 68个可屏蔽中断通道(中断源),包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设

    注1.“68”指的是F1系列中最多的中断数量,对于某一具体型号,可能并不具备这么多中断

  • 使用NVIC统一管理中断

  • 中断向量表:使程序能够跳到任意位置执行中断处理函数

image-20250807151218882

image-20250807151236146

image-20250807151250087

image-20250807151303664

3. NVIC:嵌套中断向量控制器

3.1 架构

注.一个外设可能同时占用n个中断通道

:NVIC根据优先级,分配中断的先后顺序,通过唯一的输出口向CPU逐个传递需要被处理的中断

image-20250806181421355

3.2 优先级类型

  • 抢占优先级:优先级高者,能够打断当前正在处理的任务,实现中断嵌套
  • 响应优先级:优先级高者,可以优先排队
  • 抢占优先级与响应优先级均相同的中断,按中断向量的中断号排队

【案例】现有三个中断,如下表:

image-20250813175831828

(1)当前,内核正在执行C的中断服务函数

  • 若产生A中断,由于A的抢占优先级比C更高:C将被打断(中断嵌套),内核优先执行A,A执行完后再继续执行C
  • 若产生B中断,由于B的抢占优先级和C相同:B无法打断C,内核继续执行C,C执行完后再执行B

(2)当前,内核正在执行主函数,B和C中断同时到达。由于二者的抢占优先级相同、B的响应优先级更高:内核优先执行B,B执行完后再执行C

3.3 优先级分组

  • NVIC的中断优先级由优先级寄存器的4位决定(所以某种优先级最多有16个等级),这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级

  • n有5个取值(0~4),对应5种分组方式如下:

    分组方式 抢占优先级 响应优先级
    分组0 0位,取值为0 4位,取值为0~15
    分组1 1位,取值为0~1 3位,取值为0~7
    分组2 2位,取值为0~3 2位,取值为0~3
    分组3 3位,取值为0~7 1位,取值为0~1
    分组4 4位,取值为0~15 0位,取值为0
posted @ 2025-08-14 15:43  LI,Yi-han  阅读(28)  评论(0)    收藏  举报