2021-05-24

学习目标:

理解中断是个什么概率已经使用原理。
掌握STM32的中断操作


STM32中断操作系统:

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

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

网上有一种图很好的解释了中断是怎么回事,我截取到这里:
在这里插入图片描述
在这里插入图片描述

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

Cortex-M4处理器中,每一个外部中断都可以被使能或者禁止,并且可以被设置为挂起状态或者清除状态。
在这里插入图片描述
注:
ISER:使能中断
ICER:清除中断使能
ISPR:挂起中断,若中断产生但没有立即执行,它就会被挂起
ICPR:清除挂起,中断处理完成后应该清除挂起,表示已处理
IABR:每个外部中断都有一个活跃状态位,当处理器正在处理时,该位会被置1
IP:用于设置中断的优先级

在这里插入图片描述
注:中断和异常的区别:中断是微处理器外部发送的,通过中断通道送入处理器内部,一般是硬件引起
的,比如串口接收中断,而异常通常是微处理器内部发生的,大多是软件引起的,比如除法出错异常,特权调用异常等待。不管是中断还是异常,微处理器通常都有相应的中断/异常服务程序。

嵌套中断STM32F4
中断的优先级:

3个固定的优先级,都是负值,不能改变
16个可编程优先级,用4个bit位表示
优先级越小优先级越高
在这里插入图片描述

在 NVIC 有一个专门的寄存器:中断优先级寄存器 NVIC_IPRx(在F407 中,x=0…81)用来配置外部中断的优先级,IPR宽度为 8bit,原则上每个外部中断可配置的优先级为0~255,数值越小,优先级越高。但是绝大多数CM4芯片都会精简设计,以致实际上支持的优先级数减少,在F407 中,只使用了高 4bit。

STM32F4中断的优先级分组:IPR中的4 位,又分为抢占优先级和响应优先级。抢占优先级在前,响应优先级在后。而这两个优先级各占几个位又要根据SCB->AIRCR 中的中断分组设置来决定。
这里简单介绍一下 STM32F4 的中断分组:STM32F4将中断分为 5 个组,组0~4。该分组的设置是由SCB->AIRCR寄存器的 bit10~8来定义的。
注意:工程开发中应当首先确定中断优先级分组,之后就不要再做修改了

在这里插入图片描述
中断优先级总结:
抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。同一时刻发生的中断,优先处理优先级较高的中断。
高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。
抢占优先级相同就看响应优先级,同样数值越小优先级越高。
如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。如果同时发生则优先处理编号较小的那个。

外部中断控制器EXTI:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值