0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Cortex-M3中斷優(yōu)先級的相關(guān)知識

CHANBAEK ? 來源:硬件工程師技術(shù)干貨 ? 作者:硬件工程師技術(shù)干 ? 2023-03-23 11:45 ? 次閱讀

本文詳細介紹Cortex-M3中斷優(yōu)先級相關(guān)知識。

1、什么是異常和中斷

凡是打斷程序順序執(zhí)行的事件都稱為異常(exception),比如HardFault,外部中斷等。所以中斷也可以說是異常的一種。其實這也很好理解,因為程序執(zhí)行不外乎正常和異常而已,所以打擾程序正常運行流程的事件都可以叫異常。

2、Cortex-M3異常類型

包括系統(tǒng)異常(異常編號1-15)和外部中斷(異常編號16往上),系統(tǒng)異常在Cortex-M3內(nèi)核中,由ARM設(shè)計,芯片廠商都會實現(xiàn),外部中斷最多可以有240個,由芯片生產(chǎn)廠家決定數(shù)量種類,比如UARTDMA等中斷。Reset(-3)、NMI(-2)、HardFault(-1)這三個異常優(yōu)先級都是負數(shù)且固定不變,優(yōu)先級高于其他異常,除了這三個異常之外其他異常優(yōu)先級都是可以編程的。

pYYBAGQbyxSAC-KkAAFd-Vso5GY743.png

3、什么是中斷搶占

在執(zhí)行低中斷優(yōu)先級中斷函數(shù)時,高優(yōu)先級中斷到來,低優(yōu)先級中斷被打斷,執(zhí)行高優(yōu)先級中斷,高優(yōu)先級中斷執(zhí)行完后回到低優(yōu)先級中斷繼續(xù)執(zhí)行。高優(yōu)先級中斷搶占了低優(yōu)先級中斷。如下圖所示:

poYBAGQbyyCAS7uhAAAbe1dkc18334.png

4、什么是搶占優(yōu)先級和子優(yōu)先級

每個中斷優(yōu)先級都包含兩個部分,一部分稱作搶占優(yōu)先級,另一部分稱作子優(yōu)先級。以下來詳細說明以下兩個優(yōu)先級的含義。

1)搶占優(yōu)先級不同

具有高搶占優(yōu)先級的中斷能夠搶占低搶占優(yōu)先級的中斷,也就是上面提到的中斷嵌套。

2)搶占優(yōu)先級相同,子優(yōu)先級不同

當(dāng)兩個中斷的搶占優(yōu)先級設(shè)置為相同級別時,這兩個中斷不會出現(xiàn)中斷嵌套。如果其中一個中斷正在執(zhí)行時,另外一個中斷到來,后來的中斷將會等到前一個中斷執(zhí)行完才能執(zhí)行。如果這兩個中斷都處在等待響應(yīng)狀態(tài),執(zhí)行條件到來時,首先響應(yīng)子優(yōu)先級高的中斷。

3)搶占優(yōu)先級相同,子優(yōu)先級也相同

這種情況也不會出現(xiàn)中斷嵌套,內(nèi)核將會按照向量表中的排位選擇,優(yōu)先執(zhí)行靠前的異常。比如Pend SV和Systick兩個中斷優(yōu)先級都設(shè)置為相同,如果兩個中斷同時到來,優(yōu)先執(zhí)行PendSV,因為它的排序靠前,見上面向量表。

5、什么是優(yōu)先級分組

在Cortex-M3內(nèi)核中最多使用8Bit來表示中斷優(yōu)先級,在這8Bit中一部分用來表示搶占優(yōu)先級,一部分用來表示子優(yōu)先級,這兩種優(yōu)先級到底各占用幾位,是由內(nèi)核寄存器AIRCR(應(yīng)用程序中斷及復(fù)位控制寄存器)決定的,這個寄存的Bit8-Bit10代表了優(yōu)先級分組,共3位,設(shè)置這三3位,可以改變優(yōu)先級分組,如下幾種組合:

000 高7位搶占優(yōu)先級,低1位子優(yōu)先級

001 高6位搶占優(yōu)先級,低2位子優(yōu)先級

010 高5位搶占優(yōu)先級,低3位子優(yōu)先級

011 高4位搶占優(yōu)先級,低4位子優(yōu)先級

100 高3位搶占優(yōu)先級,低5位子優(yōu)先級

101 高2位搶占優(yōu)先級,低6位子優(yōu)先級

110 高1位搶占優(yōu)先級,低7位子優(yōu)先級

111 高0位搶占優(yōu)先級,低8位子優(yōu)先級

另,Cortex-M3內(nèi)核要求最多使用8Bit來表示中斷優(yōu)先級,但是很多芯片廠商為了簡化設(shè)計都會進行裁剪,比如STM32只用4位表示優(yōu)先級。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    8966

    瀏覽量

    365008
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40083
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    889

    瀏覽量

    41219
  • Cortex-M3
    +關(guān)注

    關(guān)注

    9

    文章

    268

    瀏覽量

    59359
  • 優(yōu)先級
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    8718
收藏 人收藏

    評論

    相關(guān)推薦

    Cortex-M3處理器中斷與FreeRTOS中斷優(yōu)先級配置

    置頂/星標(biāo)公眾號,不錯過每一條消息!很多朋友對中斷的一些知識還是不了解,今天就寫點關(guān)于Cortex-M3處理器中斷相關(guān),以及FreeRTOS
    發(fā)表于 08-13 06:16

    STM32(Cortex-M3)優(yōu)先級概念

    一、中斷優(yōu)先級:STM32(Cortex-M3)優(yōu)先級概念STM32(Cortex-M3)中
    發(fā)表于 08-16 07:21

    STM32中斷優(yōu)先級和開關(guān)總中斷

    STM32中斷優(yōu)先級和開關(guān)總中斷一,中斷優(yōu)先級:STM32(Cortex-M3)
    發(fā)表于 08-16 07:05

    STM32中斷優(yōu)先級和開關(guān)總中斷

    STM32中斷優(yōu)先級和開關(guān)總中斷一,中斷優(yōu)先級:STM32(Cortex-M3)
    發(fā)表于 08-23 07:06

    探討一下STM32中斷優(yōu)先級和開關(guān)總中斷

    STM32中斷優(yōu)先級和開關(guān)總中斷一,中斷優(yōu)先級:STM32(Cortex-M3)
    發(fā)表于 01-14 07:43

    Stm32中斷優(yōu)先級概念及使用

    1.ARM cortex_m3內(nèi)核支持256個中斷(16個內(nèi)核+240外部)和可編程256中斷優(yōu)先級的設(shè)置,與其
    發(fā)表于 02-28 14:38 ?146次下載

    STM32中斷優(yōu)先級和開關(guān)總中斷教程

    STM32中斷優(yōu)先級和開關(guān)總中斷 教程
    發(fā)表于 11-23 18:03 ?0次下載

    STM32中斷優(yōu)先級相關(guān)概念與使用筆記資料免費下載

    1.ARM cortex_m3內(nèi)核支持256個中斷(16個內(nèi)核+240外部)和可編程256中斷優(yōu)先級的設(shè)置,與其
    發(fā)表于 09-26 15:25 ?2次下載
    STM32<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>的<b class='flag-5'>相關(guān)</b>概念與使用筆記資料免費下載

    STM32中斷優(yōu)先級相關(guān)概念與使用筆記詳細資料概述

     1.ARM cortex_m3內(nèi)核支持256個中斷(16個內(nèi)核+240外部)和可編程256中斷優(yōu)先級的設(shè)置,與其
    發(fā)表于 12-05 16:45 ?12次下載
    STM32<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>的<b class='flag-5'>相關(guān)</b>概念與使用筆記詳細資料概述

    STM32中斷優(yōu)先級相關(guān)概念與使用筆記資料免費下載

    1.ARM cortex_m3內(nèi)核支持256個中斷(16個內(nèi)核+240外部)和可編程256中斷優(yōu)先級的設(shè)置,與其
    發(fā)表于 01-03 16:39 ?6次下載
    STM32<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b><b class='flag-5'>相關(guān)</b>概念與使用筆記資料免費下載

    STM32中斷及FreeRTOS中斷優(yōu)先級配置

    STM32中斷,及FreeRTOS中斷優(yōu)先級配置
    的頭像 發(fā)表于 03-04 11:45 ?8607次閱讀
    STM32<b class='flag-5'>中斷</b>及FreeRTOS<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>配置

    關(guān)于Cortex-M3中斷優(yōu)先級描述資料下載

    電子發(fā)燒友網(wǎng)為你提供關(guān)于Cortex-M3中斷優(yōu)先級描述資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可
    發(fā)表于 04-25 08:43 ?2次下載
    關(guān)于<b class='flag-5'>Cortex-M3</b>的<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>描述資料下載

    2.FreeRTOS中斷優(yōu)先級和任務(wù)優(yōu)先級

    FreeRTOS中斷優(yōu)先級和任務(wù)優(yōu)先級架構(gòu):Cortex-M3版本:FreeRTOS V9.0.0前言:最開始,我并沒有搞清楚什么是中斷
    發(fā)表于 12-04 20:21 ?8次下載
    2.FreeRTOS<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>和任務(wù)<b class='flag-5'>優(yōu)先級</b>

    STM32筆記之中斷優(yōu)先級和開關(guān)總中斷

    STM32中斷優(yōu)先級和開關(guān)總中斷一,中斷優(yōu)先級:STM32(Cortex-M3)
    發(fā)表于 01-14 15:24 ?13次下載
    STM32筆記之<b class='flag-5'>中斷</b><b class='flag-5'>優(yōu)先級</b>和開關(guān)總<b class='flag-5'>中斷</b>

    Cortex-M中斷及FreeRTOS中斷優(yōu)先級配置原理

    下面就來說說關(guān)于Cortex-M中斷,及FreeRTOS中斷優(yōu)先級配置原理。
    發(fā)表于 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'>優(yōu)先級</b>配置原理