• 注册 / 登录
  • 切换到窄版
  • 查看: 2476|回复: 0

    MCU中断多级嵌套实现

    [复制链接]

    676

    主题

    690

    帖子

    6808

    积分

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    6808
    发表于 2024-1-29 15:10:38 | 显示全部楼层 |阅读模式

    路线栈欢迎您!

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    前言

    早期的MCU中断是不支持嵌套中断的,随着技术的发展,MCU嵌套可支持多级嵌套。对于某些对实时性要求较高的操作,必须赋予较高的优先级和采取中断嵌套的方式,才能保证系统能够及时响应该中断请求。

    中断4级嵌套原理

    这里用一张图给大家描述中断4级嵌套(层层嵌套)的原理。

    1.png


    RL78中断等级分4个等级,嵌套层级关系取决于中断优先级,中断优先级越高就能抢占低优先级的中断。

    实现多级嵌套,需要开启中断嵌套需在中断服务函数内打开总中断,如下图所示:

    2.png


    补充说明1

    当两个中断A、B同时触发时,如果A的中断优先级高于B,则先响应A的中断服务函数;当A、B中断优先级为同等级时,则按照硬件中断向量表序号小的先响应其中断服务函数。

    硬件中断向量表序号如下图所示:

    3.png


    补充说明2

    有个别中断是共用中断号的,比如中断号16是串口0接收错误中断与定时器1高位间隔中断共用,建议二者只用其中一个中断,不同时使用。如果一定需要同时使用,可以在同一个中断服务函数内做相应标志位判断来区分。

    4.png


    补充说明3

    很多硬件中断向量是固定地址的,不能重定向。在做Bootloader时需要特别注意,只能通过二次跳转来实现应用的中断。

    结语

    注意,中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级之间也不能相互“中断”。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|路丝栈 ( 粤ICP备2021053448号 )

    GMT+8, 2024-12-22 09:24 , Processed in 0.048254 second(s), 22 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表