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

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

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

操作BASEPRI特殊功能寄存器時(shí)無效解決方法(上)

麥辣雞腿堡 ? 來源:茶話MCU ? 作者:茶話MCU ? 2023-06-21 16:04 ? 次閱讀

STM32用戶發(fā)現(xiàn)在操作BASEPRI特殊功能寄存器時(shí),根本不起作用。比方,它目前配置了幾個(gè)中斷,優(yōu)先級(jí)各不相同,按照STM32CubeMx里的配置分別為2、3、4不等,當(dāng)他在BASEPRI寄存器里寫這幾個(gè)數(shù)字中的任意一個(gè)時(shí),發(fā)現(xiàn)BASEPRI的數(shù)字始終是0,沒有任何效果。

我們知道,通過配置BASEPRI寄存器非0值來給系統(tǒng)中的中斷響應(yīng)設(shè)置門檻,當(dāng)中斷優(yōu)先級(jí)低于某個(gè)級(jí)別時(shí)將不會(huì)得到CPU的響應(yīng)執(zhí)行,也就是說只有中斷優(yōu)先級(jí)高于某個(gè)級(jí)別時(shí)才能得到響應(yīng)。下面截圖是來自ARM

CORTEX M4技術(shù)手冊中有關(guān)BASEPRI寄存器的描述。

圖片

從這里可以看到該寄存器的有效配置位有8位,對(duì)其寫0無意義,或者說放棄設(shè)置中斷響應(yīng)門檻功能。在ARMCORTEX-M內(nèi)核系統(tǒng)里,中斷優(yōu)先級(jí)的高低跟表示優(yōu)先級(jí)的數(shù)字大小成相反關(guān)系,即數(shù)字越小的中斷優(yōu)先級(jí)配置值所對(duì)應(yīng)的優(yōu)先級(jí)反而越高。

根據(jù)BASEPRI寄存器的定義,假設(shè)給BASEPRI寫數(shù)字5,那就意味著只有中斷優(yōu)先級(jí)高于5的中斷,即中斷優(yōu)先級(jí)的數(shù)字小于5的中斷可以得到響應(yīng),而其它低于優(yōu)先級(jí)5的中斷將會(huì)被屏蔽。【注:這里說的優(yōu)先級(jí)比較最終都體現(xiàn)在搶占優(yōu)先級(jí)上】

另外,在ARM內(nèi)核里關(guān)于每個(gè)中斷的優(yōu)先級(jí)配置寄存器也是8位,并支持字節(jié)訪問。

圖片

內(nèi)核里還有跟中斷優(yōu)先級(jí)有關(guān)的寄存器,它把中斷優(yōu)先級(jí)配置位分成2部分,用來分別設(shè)置每個(gè)中斷的組優(yōu)先級(jí)和子優(yōu)先級(jí),或稱搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí),也有稱主優(yōu)先級(jí)和子優(yōu)先級(jí)的,意思都一樣。個(gè)人喜歡中間的術(shù)語。

圖片

以上圖優(yōu)先級(jí)分組值【PRIGROUP】等于3為例。中斷優(yōu)先級(jí)寄存器中的bit0bit3用作配置該中斷的響應(yīng)優(yōu)先級(jí),顯然,它的值可以是0到15的任一值。bit4bit7用來配置該中斷的強(qiáng)占優(yōu)先級(jí),同樣它的值也可以是0到15的任一值。若以【PRIGROUP】等于7為例,則所有可配置優(yōu)先級(jí)的中斷只配置響應(yīng)優(yōu)先級(jí),不區(qū)分強(qiáng)占優(yōu)先級(jí),或者說搶占優(yōu)先級(jí)都一樣,或者說彼此不發(fā)生中斷搶占都一個(gè)意思。所謂中斷搶占即指另一中斷事件打斷正在執(zhí)行的中斷服務(wù)程序而響應(yīng)更高優(yōu)先級(jí)的程序。

上面都基于ARM

Cortex-M內(nèi)核的最初設(shè)計(jì)來說的,我們知道,STM32是基于ARM內(nèi)核添加ST的外設(shè)而成,ST在設(shè)計(jì)芯片的中斷優(yōu)先級(jí)這個(gè)地方,在AMR核的設(shè)計(jì)基礎(chǔ)上做了些針對(duì)性的調(diào)整,涉及中斷優(yōu)先級(jí)的寄存器的有效控制位由8位變成4位,且僅使用高4位,低4位變成保留位?!鞠聢D來自STM32

Cortex M4 編程手冊。注意紅色下劃線特別說明?!?/p>

圖片

不難理解,BASEPRI寄存器也會(huì)跟著做了調(diào)整,不然沒法跟上面調(diào)整過的中斷優(yōu)先級(jí)寄存器匹配,它也只使用高4位,低4位變保留位?!鞠聢D來自STM32F4系列編程手冊】

圖片

當(dāng)然,關(guān)于優(yōu)先級(jí)分組的控制寄存器的內(nèi)容也做了相應(yīng)調(diào)整,即針對(duì)優(yōu)先級(jí)寄存器的高4位來劃分搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的配置。詳見下圖:

圖片

把上圖的各種優(yōu)先級(jí)分組配置變得更直觀點(diǎn)就是下圖的樣子。綠色用于配置搶占優(yōu)先級(jí),黃色用于配置響應(yīng)優(yōu)先級(jí),灰色保留位,一共有5種可能的分組情形。

圖片

聊到這里,我們得知每個(gè)可配置的STM32片內(nèi)中斷,都有一個(gè)8位優(yōu)先級(jí)配置寄存器與之對(duì)應(yīng),且只用到高4位。我們接著看看開篇的問題。目前STM32的有關(guān)中斷配置如下圖所示【使用STM32CubeMx工具進(jìn)行】:

圖片

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119194
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352438
  • 控制
    +關(guān)注

    關(guān)注

    4

    文章

    1005

    瀏覽量

    122506
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在C語言環(huán)境下訪問特殊功能寄存器sfr的經(jīng)驗(yàn)

    單片機(jī)的特殊功能寄存器SFR,是SRAM地址已經(jīng)確定的SRAM單元,在C語言環(huán)境下對(duì)其訪問歸納起來有兩種方法
    的頭像 發(fā)表于 11-10 09:46 ?9064次閱讀
    在C語言環(huán)境下訪問<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>sfr的經(jīng)驗(yàn)

    硬件特殊功能寄存器編程思路和RAM使用的問題求解?

    著RAM。 而以前弄51,AVR,PIC的時(shí)候硬件特殊功能寄存器都是一個(gè)一個(gè)設(shè)置。 請(qǐng)教一下這兩個(gè)方法各有什么有點(diǎn)和缺點(diǎn)。
    發(fā)表于 05-17 12:24

    關(guān)于三星2410A處理特殊功能寄存器問題

    會(huì)有這些特殊功能寄存器的地址的實(shí)際地址。哪FLASH里面地址和芯片的特殊功能寄存器的實(shí)際地址是什么關(guān)系了?如何去實(shí)際操作這些
    發(fā)表于 10-02 21:56

    特殊功能寄存器

    MCS-51單片機(jī)的特殊功能寄存器總是不能靈活運(yùn)用額。。比如TMOD、TCON、什么的,在做定時(shí)中斷的時(shí)候老是不理解,各位幫指點(diǎn)指點(diǎn)呀!
    發(fā)表于 02-06 23:09

    特殊功能寄存器位置及功能是什么

    特殊功能寄存器(SFR)位置及功能
    發(fā)表于 01-05 07:07

    【硬見小百科】單片機(jī)的特殊功能寄存器

    在單片機(jī)中有一些獨(dú)立的存儲(chǔ)單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。 特殊功能寄存器地址映象表(一) 特殊功能
    的頭像 發(fā)表于 01-16 13:45 ?5226次閱讀

    51單片機(jī)的21個(gè)特殊功能寄存器的詳細(xì)資料說明

    學(xué)習(xí)51單片機(jī)的過程中,其實(shí)就是學(xué)習(xí)怎么用它的特殊功能寄存器(有些寄存器是我們看不到的),特殊功能寄存器是 80C51單片機(jī)中各
    發(fā)表于 09-10 17:26 ?13次下載
    51單片機(jī)的21個(gè)<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>的詳細(xì)資料說明

    51單片機(jī)的21個(gè)特殊功能寄存器詳細(xì)資料概述

    在80C51單片機(jī)中設(shè)置了與片內(nèi)RAM統(tǒng)一編址的21個(gè)特殊功能寄存器(SFR)。訪問SFR只允許使用直接尋址方式。特殊功能寄存器(SFR)每一位的定義和作用與單片機(jī)各部件直接相關(guān)。
    發(fā)表于 07-09 17:40 ?8次下載
    51單片機(jī)的21個(gè)<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>詳細(xì)資料概述

    7課:單片機(jī)的特殊功能寄存器 2020/11/15

    7課:單片機(jī)的特殊功能寄存器 2020/11/15
    發(fā)表于 11-20 12:51 ?7次下載
    7課:單片機(jī)的<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b> 2020/11/15

    51單片機(jī)的特殊功能寄存器到底在哪,為何51子系列沒有高128B仍然有特殊功能寄存器

    簡單來說,就是片內(nèi)RAM和特殊功能寄存器在物理上是相互獨(dú)立的。就像51子系列內(nèi)部RAM沒有高128B,但它任然有特殊功能寄存器,因?yàn)?b class='flag-5'>特殊功能
    發(fā)表于 11-23 16:51 ?22次下載
    51單片機(jī)的<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>到底在哪,為何51子系列沒有高128B仍然有<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>

    【硬見小百科】單片機(jī)的特殊功能寄存器

    )><特殊功能寄存器地址映象表(三)>幾個(gè)常用的SFR1、ACC:累加,常常用A表示。這是個(gè)什么東西,可不能從名字理解,它是一個(gè)
    發(fā)表于 12-20 19:15 ?14次下載
    【硬見小百科】單片機(jī)的<b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>

    STC單片機(jī)常用特殊功能寄存器速查

    STC單片機(jī)常用特殊功能寄存器速查(STC-SFR2-b9正式版)
    發(fā)表于 09-30 17:20 ?0次下載

    為何修改BASEPRI寄存器無效?

    有STM32用戶發(fā)現(xiàn)在操作BASEPRI特殊功能寄存器時(shí),根本不起作用。比方,它目前配置了幾個(gè)中斷,優(yōu)先級(jí)各不相同,按照STM32CubeMx里的配置分別為2、3、4不等,當(dāng)他在
    的頭像 發(fā)表于 04-26 09:16 ?1965次閱讀
    為何修改<b class='flag-5'>BASEPRI</b><b class='flag-5'>寄存器</b><b class='flag-5'>無效</b>?

    操作BASEPRI特殊功能寄存器時(shí)無效解決方法(下)

    站在中斷優(yōu)先級(jí)寄存器的高4位而言的,那么放到整個(gè)8位優(yōu)先級(jí)寄存器來看的話,他們的優(yōu)先級(jí)應(yīng)該是0x00,0x20,0x30,0x40【其實(shí),低4位值是多少無關(guān)緊要,反正無效位】。 前面提過了,現(xiàn)在
    的頭像 發(fā)表于 06-21 16:08 ?867次閱讀
    <b class='flag-5'>操作</b><b class='flag-5'>BASEPRI</b><b class='flag-5'>特殊功能</b><b class='flag-5'>寄存器</b>時(shí)<b class='flag-5'>無效</b><b class='flag-5'>解決方法</b>(下)

    特殊功能寄存器的解釋整理匯總

    電子發(fā)燒友網(wǎng)站提供《特殊功能寄存器的解釋整理匯總.pdf》資料免費(fèi)下載
    發(fā)表于 05-09 14:27 ?7次下載