目录
1.外部中断是什么
想象一个场景:你在家里玩游戏,这时候突然来电话了。这时你会停止玩游戏去接电话,电话打完再放下电话继续玩。这一个过程就体现了中断的思想。我们抽象一下,把自己想象成一个单片机系统,玩游戏就是正在执行的主任务,如果没有外界干扰,这个系统会一直执行当前的主任务。而当外部有改变(电话响了)的时候,系统会第一时间响应,从主任务跳转到这个紧急任务中,这个突发的事件就是(外部)中断,而系统处理的紧急任务则是中断处理函数。当紧急任务(接电话)完毕之后,系统又会回到最初的主任务中。
这就是对中断的简单描述。
定义: 专业说法:中断指的是计算机运行中,正在运行事情被打断,需要紧急处理中断是指一个突发事件,中止了CPU当前的工作,转而处理突发事件,处理完成后再回到当前的工作继续执行。
STM32允许多种多样的中断,如外部IO、ADC、USART、I2C、RTC、USB、PVD等
1. STM32的外部中断线
-
STM32的每个IO都可以作为外部中断输入。
-
STM32的中断控制器支持19(20)个外部中断/事件请求:
EXTI0~15:对应外部IO口的输入中断。
EXTI16:连接到PVD输出。
EXTI17:连接到RTC闹钟事件。
EXTI18:连接到USB唤醒事件。
EXTI19 以太网唤醒事件(只适用互联型)
每个外部中断线可以独立的配置触发方式(上升沿,下降沿或者双边沿触发),触发/屏蔽,专用的状态位。EXTI0 至 EXTI15 用于 GPIO,通过编程控制可以实现任意一个 GPIO 作为 EXTI 的输入源,
EXTI0 可以通过 AFIO 的外部中断配置寄存1(AFIO_EXTICR1) 的 EXTI0[3:0] 位选择配置为 PA0、PB0、PC0、PD0、PE0、PF0、PG0、PH0 或者 PI0。
STM32供IO使用的中断线只有16个,但是STM32F10x系列的IO口多达上百个,STM32F103ZET6(112),STM32F103RCT6(51),那么中断线怎么跟IO口对应上呢?下图就是STM32的外部中断线和IO口的对应关系