stm32F103C8T6标准库外部中断的概念

目录

  • 1.中断的概念
  • [2 中断控制器](#2 中断控制器)
  • [3 外部中断/事件控制器框图](#3 外部中断/事件控制器框图)
  • [4 EXTI简介](#4 EXTI简介)
  • [5 中断事件线](#5 中断事件线)
  • [6 中断优先级](#6 中断优先级)
  • [7 标准库中断的应用](#7 标准库中断的应用)

1.中断的概念

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

2 中断控制器

嵌套向量中断控制器(NestedVectored InterruptController):简称NVIC。CM3内核支持256个中断,包括16个内核中断和250个外部中断,同时具有256级的可编程中断设置。而STM32只使用了一部分。STM32拥有84个中断,包括16个内核中断和68个可屏蔽中断(STM32F107系列才使用了68个可屏蔽中断),还拥有16级可编程的中断优先级。STM32F103系列只使用了60个可屏蔽中断。

3 外部中断/事件控制器框图

4 EXTI简介

EXTI(External interrupt/event controller)---外部中断/事件控制器,管理了控制器的20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性

5 中断事件线

前面EXTI0 - EXTI15分给每一个IO,另外7个用于处理特定的外设事件。这里PX0的X代表数据端口,也就是可以是PA0,PB0,PC0数据端口。意味着PA0,PB0,PC0它们都是共同占用EXT0这条线。

也就是说PA0,PB0,PC0都使用同一条中断事件线,但是我不知道是哪一个来的中断事件线,后面有一个区分它的。

6 中断优先级

优先级分组 抢占优先级 响应优先级 高四位描述
0 0极 0 ~ 15极 0bit用于抢占优先级 4bit用于响应优先级
1 0 ~ 1级 0 ~ 7级 1bit用于抢占优先级 3bit用于响应优先级
2 0 ~ 3级 0 ~ 3级 2bit用于抢占优先级 2bit用于响应优先级
3 0 ~ 7级 0 ~ 1级 3bit用于抢占优先级 1bit用于响应优先级
4 0 ~ 15级 0级 4bit用于抢占优先级 0bit用于响应优先级

响应优先级又称为子优先级。数值越小,优先级越高

0bit

只有一种状态 0极

1bit

2的1次方 - 1得到1,等级范围:0 ~ 1极

2bit

2的2次方 - 1得到3,等级范围:0 ~ 3极

3bit

2的3次方 - 1得到7,等级范围:0 ~ 7极

4bit

2的4次方 - 1得到15,等级范围:0 ~ 15极

抢占优先级:可以打断进行插队进去,比如我现在正在执行主任务,此时我有别的任务,别的任务的优先级高,就可以打断先执行。

响应优先级:大家都是同等级,大家都依次排队

优先级分组:0,1,2,3,4,取决于抢占优先级的数量,

0组,抢占优先级数量是0,

1组,抢占优先级数量是2,

2组,抢占优先级数量是4,

3组,抢占优先级数量是8,

4组,抢占优先级数量是16。

7 标准库中断的应用

标准库函数对每个外设都建立了一个初始化结构体,比如EXTIInitTypeDef,

结构体成员用于设置外设工作参数,并由外设初始化配置函数,比如EXTIInitO

调用,这些设定参数将会设置外设相应的寄存器,达到配置外设工作环境的目的。

I)EXTI Line:EXTI中断/事件线选择,可选EXTIO至EXTI19。

2)EXTI_Mode:EXTI模式选择,可选为产生中断或者产生事件。

3)EXTITrigger:EXTI边沿触发事件,可选上升沿触发、下降沿触发或者上升沿和下降沿都触发。

4)EXTILineCmd:控制是否使能EXTI线,可选使能或禁用。

相关推荐
chao1898441 小时前
STM32 HAL库驱动AT24C02 EEPROM例程
stm32·单片机·嵌入式硬件
不会武功的火柴3 小时前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
猫猫的小茶馆4 小时前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32
feifeigo1234 小时前
STM32矩阵键盘驱动(库函数版)实现
stm32·矩阵·计算机外设
嵌入式小站5 小时前
STM32 零基础可移植教程 05:按键消抖,为什么按一次会触发好几次
chrome·stm32·嵌入式硬件
czhaii5 小时前
跟我动手学FX系列PLC GX2环境
嵌入式硬件
拾知_H6 小时前
STM32/Delay延时函数编程思路
stm32·单片机·时钟·延时
2zcode7 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
jllllyuz8 小时前
单相并网逆变器控制代码实现(STM32版)
stm32·单片机·嵌入式硬件
冉卓电子9 小时前
GD32C103RBT6 misc 内核驱动库极简解析
单片机·嵌入式硬件