对于Cortex-M0内核的中断的抢占和嵌套的理解

首先,我们需要理清楚 异常中断 的关系:
异常 是能够引起程序流偏离正常流程的事件,当异常 发生的时候,正在执行的程序就会处于挂起状态,处理器转而执行一块与该事件相关的代码块(异常处理)
事件 可以是外部输入也可以是内部产生,外部产生的事件被称为 中断或者中断请求(IRQ),微控制器的中断可以由片上外设或者软件产生
异常嵌套 异常或被划分为多个优先级,在执行低优先级的异常时,更高优先级的异常可以被触发并且被执行,这一过程被称作为异常嵌套

1 Cortex-M0可以支持1~32个中断,外部中断只有在使能以后才能够被使用,如果该中断被禁止或者当前处理器正在处理等级更高的优先级的异常处理,则该中断会被存储在挂起状态寄存器中。

2 在Cortex-M0处理当中每个异常都对应一个优先级,优先级决定着该异常是否执行或者是延迟执行(挂起状态)
Cortex-M0处理器支持
3个固定的最高优先级
以及4个可编程的优先级
抢占 如果发生已经使能了的异常,此时没有其他异常处理正在执行,而且屏蔽中断寄存器没有屏蔽该异常,那么处理器就会接受该异常并且转而执行新的异常,从当前正在运行的任务切换到异常处理 的过程叫做抢占==

抢占是一种现象,是处理器基于异常优先级的等级发生任务处理切换的一种现象,包括从普通程序流切换到异常处理程序模块新的异常等级高于当前正在执行的异常

中断嵌套或者异常嵌套 是当第二种抢占发生时,也就是 产生了新的异常
当前处理器正在处理一个已经有的异常
正在处理的异常被暂停,处理器切换到新发生的更高等级的异常
其实 可以认为 的是发生中断嵌套的前提条件是发生了抢占

如果两个异常同时发生,并且他们被赋予 了相同的优先级,异常编号较小的优先级将会被执行。也就是说会存在多个中断编号不同的中断,他们的异常优先等级可能是相同的。
以上成立的两个条件 1 处理器允许这些中断
2 处理器此时也没有执行这些中断

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值