STM32-中断系统

中断的基本概念

STM32-中断系统_第1张图片

处理器中的中断

在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。中断在计算机多任务处理,尤其是即时系统中尤为重要。比如uCOS,FreeRTOS等。

意义

中断能提高CPU的效率,同时能对突发事件做出实时处理。实现程序的并行化,实现嵌入式系统进程之间的切换

进入中断

 处理器自动保存现场到堆栈里

 {PC, xPSR, R0-R3, R12, LR}

 一旦入栈结束,ISR便可开始执行

 晚到的中断会重新取ISR地址,但无需再次保存现场

退出中断 中断前的现场被自动从堆栈中恢复

 一旦出栈完成,继续执行被中断打断的指令

 出栈的过程也可被打断,使得随时可以响应新的中断,而不再进行

现场保存

STM32-中断系统_第2张图片

STM32-中断系统_第3张图片

NVIC的主要功能

中断管理

Cortex-M4 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有256 级的可编程中断优先级设置。但 STM32F4 并没有使用Cortex-M4 内核的全部东西,而是只用了它的一部分。

Cortex-M4处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态或者清除状态。

STM32-中断系统_第4张图片

中断和异常向量表

STM32F407中断和异常向量

        CM4 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断。STM32F407实际上只使用了10个内部异常和82个外部中断。

        当异常或中断发生时,处理器会把PC设置为一个特定地址,这一地址就称为异常向量。每一类异常源都对应一个特定的入口地址,这些地址按照优先级排列以后就组成一张异常向量表。

向量化处理中断的好处

        统的处理方式需要软件去完成。采用向量表处理异常,M0处理器会从存储器的向量表中,自动定位异常的程序入口。从发生异常到异常的处理中间的时间被缩减。

STM32-中断系统_第5张图片

嵌套中断

STM32-中断系统_第6张图片

STM32-中断系统_第7张图片

中断优先级总结

抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。同一时刻发生的中断,优先处理优先级较高的中断。

高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。

抢占优先级相同就看响应优先级,同样数值越小优先级越高。

如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。如果同时发生则优先处理编号较小的那个。

外部中断控制器EXTI

STM32-中断系统_第8张图片

STM32-中断系统_第9张图片

STM32-中断系统_第10张图片

STM32-中断系统_第11张图片

STM32-中断系统_第12张图片

按键中断实例

按键原理图分析

STM32-中断系统_第13张图片

按键中断编程步骤分析

1、使能相应的时钟

2、配置GPIO管脚为中断功能

3、设置中断优先级

4、使能相应的中断

5、实现中断服务程序

按键中断编程实例

实现KEY3按下后触发中断,在中断服务程序中打印一段话

STM32-中断系统_第14张图片

STM32-中断系统_第15张图片

串口中断实例

串口中断编程步骤分析

1、使能相应的时钟

2、配置GPIO管脚为串口功能

3、设置中断优先级

4、使能相应的中断

5、实现中断服务程序

串口中断编程实例

串口接收中断的实现

串口发送中断的实现

你可能感兴趣的:(stm32开发,stm32,嵌入式硬件,单片机)