0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cortex-M3中断优先级的相关知识

CHANBAEK 来源:硬件工程师技术干货 作者:硬件工程师技术干 2023-03-23 11:45 次阅读

本文详细介绍Cortex-M3中断优先级相关知识。

1、什么是异常和中断

凡是打断程序顺序执行的事件都称为异常(exception),比如HardFault,外部中断等。所以中断也可以说是异常的一种。其实这也很好理解,因为程序执行不外乎正常和异常而已,所以打扰程序正常运行流程的事件都可以叫异常。

2、Cortex-M3异常类型

包括系统异常(异常编号1-15)和外部中断(异常编号16往上),系统异常在Cortex-M3内核中,由ARM设计,芯片厂商都会实现,外部中断最多可以有240个,由芯片生产厂家决定数量种类,比如UARTDMA等中断。Reset(-3)、NMI(-2)、HardFault(-1)这三个异常优先级都是负数且固定不变,优先级高于其他异常,除了这三个异常之外其他异常优先级都是可以编程的。

pYYBAGQbyxSAC-KkAAFd-Vso5GY743.png

3、什么是中断抢占

在执行低中断优先级中断函数时,高优先级中断到来,低优先级中断被打断,执行高优先级中断,高优先级中断执行完后回到低优先级中断继续执行。高优先级中断抢占了低优先级中断。如下图所示:

poYBAGQbyyCAS7uhAAAbe1dkc18334.png

4、什么是抢占优先级和子优先级

每个中断优先级都包含两个部分,一部分称作抢占优先级,另一部分称作子优先级。以下来详细说明以下两个优先级的含义。

1)抢占优先级不同

具有高抢占优先级的中断能够抢占低抢占优先级的中断,也就是上面提到的中断嵌套。

2)抢占优先级相同,子优先级不同

当两个中断的抢占优先级设置为相同级别时,这两个中断不会出现中断嵌套。如果其中一个中断正在执行时,另外一个中断到来,后来的中断将会等到前一个中断执行完才能执行。如果这两个中断都处在等待响应状态,执行条件到来时,首先响应子优先级高的中断。

3)抢占优先级相同,子优先级也相同

这种情况也不会出现中断嵌套,内核将会按照向量表中的排位选择,优先执行靠前的异常。比如Pend SV和Systick两个中断优先级都设置为相同,如果两个中断同时到来,优先执行PendSV,因为它的排序靠前,见上面向量表。

5、什么是优先级分组

在Cortex-M3内核中最多使用8Bit来表示中断优先级,在这8Bit中一部分用来表示抢占优先级,一部分用来表示子优先级,这两种优先级到底各占用几位,是由内核寄存器AIRCR(应用程序中断及复位控制寄存器)决定的,这个寄存的Bit8-Bit10代表了优先级分组,共3位,设置这三3位,可以改变优先级分组,如下几种组合:

000 高7位抢占优先级,低1位子优先级

001 高6位抢占优先级,低2位子优先级

010 高5位抢占优先级,低3位子优先级

011 高4位抢占优先级,低4位子优先级

100 高3位抢占优先级,低5位子优先级

101 高2位抢占优先级,低6位子优先级

110 高1位抢占优先级,低7位子优先级

111 高0位抢占优先级,低8位子优先级

另,Cortex-M3内核要求最多使用8Bit来表示中断优先级,但是很多芯片厂商为了简化设计都会进行裁剪,比如STM32只用4位表示优先级。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9164

    浏览量

    368885
  • 内核
    +关注

    关注

    3

    文章

    1382

    浏览量

    40395
  • 中断
    +关注

    关注

    5

    文章

    900

    浏览量

    41689
  • Cortex-M3
    +关注

    关注

    9

    文章

    270

    浏览量

    59567
  • 优先级
    +关注

    关注

    0

    文章

    21

    浏览量

    8815
收藏 人收藏

    评论

    相关推荐

    Cortex-M3处理器中断与FreeRTOS中断优先级配置

    置顶/星标公众号,不错过每一条消息!很多朋友对中断的一些知识还是不了解,今天就写点关于Cortex-M3处理器中断相关,以及FreeRTOS
    发表于 08-13 06:16

    STM32(Cortex-M3)优先级概念

    一、中断优先级:STM32(Cortex-M3)优先级概念STM32(Cortex-M3)中
    发表于 08-16 07:21

    STM32中断优先级和开关总中断

    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)
    发表于 08-16 07:05

    STM32中断优先级和开关总中断

    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)
    发表于 08-23 07:06

    探讨一下STM32中断优先级和开关总中断

    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)
    发表于 01-14 07:43

    Stm32中断优先级概念及使用

    1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256中断优先级的设置,与其
    发表于 02-28 14:38 146次下载

    STM32中断优先级和开关总中断教程

    STM32中断优先级和开关总中断 教程
    发表于 11-23 18:03 0次下载

    STM32中断优先级相关概念与使用笔记资料免费下载

    1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256中断优先级的设置,与其
    发表于 09-26 15:25 2次下载
    STM32<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>的<b class='flag-5'>相关</b>概念与使用笔记资料免费下载

    STM32中断优先级相关概念与使用笔记详细资料概述

     1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256中断优先级的设置,与其
    发表于 12-05 16:45 12次下载
    STM32<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>的<b class='flag-5'>相关</b>概念与使用笔记详细资料概述

    STM32中断优先级相关概念与使用笔记资料免费下载

    1.ARM cortex_m3内核支持256个中断(16个内核+240外部)和可编程256中断优先级的设置,与其
    发表于 01-03 16:39 6次下载
    STM32<b class='flag-5'>中断</b><b class='flag-5'>优先级</b><b class='flag-5'>相关</b>概念与使用笔记资料免费下载

    STM32中断及FreeRTOS中断优先级配置

    STM32中断,及FreeRTOS中断优先级配置
    的头像 发表于 03-04 11:45 8991次阅读
    STM32<b class='flag-5'>中断</b>及FreeRTOS<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>配置

    关于Cortex-M3中断优先级描述资料下载

    电子发烧友网为你提供关于Cortex-M3中断优先级描述资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可
    发表于 04-25 08:43 2次下载
    关于<b class='flag-5'>Cortex-M3</b>的<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>描述资料下载

    2.FreeRTOS中断优先级和任务优先级

    FreeRTOS中断优先级和任务优先级架构:Cortex-M3版本:FreeRTOS V9.0.0前言:最开始,我并没有搞清楚什么是中断
    发表于 12-04 20:21 9次下载
    2.FreeRTOS<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>和任务<b class='flag-5'>优先级</b>

    STM32笔记之中断优先级和开关总中断

    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)
    发表于 01-14 15:24 13次下载
    STM32笔记之<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>和开关总<b class='flag-5'>中断</b>

    Cortex-M中断及FreeRTOS中断优先级配置原理

    下面就来说说关于Cortex-M中断,及FreeRTOS中断优先级配置原理。
    发表于 02-08 15:30 3次下载
    <b class='flag-5'>Cortex-M</b><b class='flag-5'>中断</b>及FreeRTOS<b class='flag-5'>中断</b><b class='flag-5'>优先级</b>配置原理