05STM32EXIT外部中断&中断系统

STM32EXIT外部中断&中断系统

中断系统

中断触发条件:

对外部中断来说,可以是引脚发生了电平跳变

对定时器来说,可以是定时的时间到了

对串口通信来说,可以是接收到了数据

当这些事件发生时,情况比较紧急,比如外部中断来了,如果不处理,下一个跳变信号就跟着过来了。

比如串口接收中断来了,如果不读取接收到的数据,那下一个数据再过来,就会把原来的数据覆盖掉。

所以希望当中断条件满足时,CPU能够立即停下当前执行的程序,转而去处理中断事件的程序。

中断处理流程和用途:

比如外部中断来了,需要计次,那就变量++;串口中断来了就把接收到的数据转存起来;处理完紧急事情后,CPU回到原来程序运行的位置。

使用中断系统,能极大地提高程序的效率,如果没有中断系统,为了防止外部中断被忽略或者串口数据被覆盖,那主程序就只能不断地查询是否有这些事件发生,不能在干其他的事情。

如果没有定时器中断,那主函数就只有靠Delay函数,才能实现定时的功能。有了中断系统之后,主程序就可以放心执行其他事情,有中断的时候再去处理。大大提升效率。

中断优先级是根据程序设计的需求,自己设置的。紧急的事情优先级要设置地高一点,这样可以更好地安排中断事件,防止紧急的事件被别的中断耽误。

中断嵌套也是为了照顾非常紧急的中断的,能否进行中断嵌套,由中断优先级来决定。

中断来了,主程序都得立即暂停,程序由硬件电路自动跳转到中断程序中。

中断执行前,进行现场保护

中断执行后,会再还原现场。保证主程序即使被中断了,回来后也能继续运行。

用C语言编程,保护现场和还原现场并不需要我们操作(操作系统里面有中断的概念),由编译器做好。

C语言程序中中断的执行流程:

一般中断程序都是在一个子函数里面,这个函数不需要我们调用,当中断来临时,由硬件自动调用这个函数。

STM32中断

中断通道就是中断源的意思,68个是F1系列最多的中断数量,对于一个具体的型号来说,可能没有这么多中断,所以这个数量看看就行,具体以对应型号的数据手册为准。

STM32的中断非常多,几乎所有模块都能申请中断,

NVIC就是STM32中用来管理中断,分配优先级的。

灰色的部分是内核的中断,

1.Reset复位中断 当产生复位事件时,程序就会自动执行复位中断函数,也就是复位后程序开始执行的位置

2.后面的各种灰色的中断都是内核里面的,一般比较高深,看上去也难理解,但是这些中断我们一般用不到,所以了解一下即可

不是灰色的部分的:就是STM32外设的中断了。

比如:

WWDG 窗口看门狗,用来监测程序运行状态的中断,比如程序卡死了,没有及时喂狗,窗口看门狗就会申请中断,程序就会调到窗口看门狗的中断程序里,在中断程序里就可以进行一些错误检查,看看出现什么问题了。

PVD 电源电压监测,如果供电电压不足,PVD电路就会申请中断,在中断里就知道,现在供电不足,是不是电池没电了,要赶紧保存一下重要数据。

TAMPER 外设电路检测到异常或者什么事件,需要提示CPU的时候,就可以申请中断,让程序调到对应的中断函数里运行,用来处理异常或事件

EXTI0-EXTI4,EXTI9_5-EXTI15_10就是本节外部中断对应的中断资源。

中断的地址的作用:因为程序中的中断函数,它的地址由编译器分配的,是不固定的。但是中断的跳转,由于硬件限制,只能跳转到固定的地址执行程序,所以为了能让硬件跳转到一个不固定的中断函数里面,就需要在内存中定义一个地址的列表。这个列表地址固定,中断发生后,就跳到这个固定位置。然后有编译器再加上一条跳转到中断函数的代码,这样中断函数就可以跳转到任意位置了。

中断地址的列表:叫做中断向量表,相当于中断跳转的一个跳板。(不过C语言编程不需要管这个中断向量表,因为编译器帮我们做好了)


NVIC嵌套中断向量控制器基本结构

在STM32中,NVIC用来统一分配中断优先级和管理中断的,NVIC是一个内核外设,是CPU的小助手。

STM32中断非常多,如果把中断都接到CPU上,那么CPU得引出很多线进行适配,设计上就很麻烦,并且很多中断同时申请,或者中断很多产生了拥堵,CPU就很难处理,毕竟CPU主要用来做运算的。所以中断分配的任务就放到别的地方。所以NVIC就出现了。

NVIC有很多输入口,有多少个中断线路,都可以接过来。(这里斜杠上写个n,意思是一个外设可能会同时占用多个中断通道,所以有n条线),

相关推荐
日晨难再16 分钟前
嵌入式:STM32的启动(Startup)文件解析
stm32·单片机·嵌入式硬件
yufengxinpian39 分钟前
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
单片机·嵌入式硬件·音视频·智能硬件
__基本操作__2 小时前
历遍单片机下的IIC设备[ESP--0]
单片机·嵌入式硬件
网易独家音乐人Mike Zhou8 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
zy张起灵8 小时前
48v72v-100v转12v 10A大功率转换电源方案CSM3100SK
经验分享·嵌入式硬件·硬件工程
PegasusYu11 小时前
STM32CUBEIDE FreeRTOS操作教程(九):eventgroup事件标志组
stm32·教程·rtos·stm32cubeide·free-rtos·eventgroup·时间标志组
lantiandianzi15 小时前
基于单片机的多功能跑步机控制系统
单片机·嵌入式硬件
文弱书生65615 小时前
输出比较简介
stm32
哔哥哔特商务网15 小时前
高集成的MCU方案已成电机应用趋势?
单片机·嵌入式硬件
跟着杰哥学嵌入式15 小时前
单片机进阶硬件部分_day2_项目实践
单片机·嵌入式硬件