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条线),

相关推荐
合宙Luat6 小时前
合宙LuatOS开发板Core_Air780EP使用说明
单片机·嵌入式硬件·物联网·硬件工程·lua
手打猪大屁6 小时前
STM32——串口通信(发送/接收数据与中断函数应用)
经验分享·笔记·stm32·单片机·嵌入式硬件
yyqzjw8 小时前
【STM32】cubemx配置GPIO
stm32·单片机·嵌入式硬件
嵌入式大圣10 小时前
单片机工程师:创新与挑战之路
单片机·嵌入式硬件
TNT_JQR11 小时前
蓝桥杯嵌入式国三备赛经验分享
经验分享·嵌入式硬件·蓝桥杯
好家伙VCC11 小时前
一些面试和找工作的技巧-新资要的低并不会给你加分薪资要的高不会成为公司拒绝你的核心理由
单片机·嵌入式硬件·学习·面试·职场和发展·鲁棒优化
爱学电子的刻刻帝14 小时前
STM32智能家居语音系统
stm32·单片机·智能家居·语音控制
TeYiToKu15 小时前
笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel
linux·c语言·汇编·笔记·单片机·嵌入式硬件
小狗爱吃黄桃罐头16 小时前
江协科技STM32学习- P11 中断系统,EXTI外部中断
stm32·江科大stm32
&AtTiTuDe;18 小时前
ADC 简介(STM32F407)
stm32·单片机·嵌入式硬件