娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年05月30日(星期五)

2018年05月30日 | ARM Cortex-M4和Cortex-M0+中斷優(yōu)先級(jí)及嵌套搶占問(wèn)題

發(fā)布者:代碼漫游者 來(lái)源: eefocus關(guān)鍵字:ARM  Cortex-M4  Cortex-M0+  中斷優(yōu)先級(jí)  嵌套搶占 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

  對(duì)于中斷優(yōu)先級(jí)配置的需求實(shí)際上主要體現(xiàn)在系統(tǒng)存在多個(gè)可能的中斷源情況下,這時(shí)為了保證代碼的可靠執(zhí)行,我們不得不考慮很現(xiàn)實(shí)的兩個(gè)問(wèn)題,一個(gè)是如果兩個(gè)以上中斷同時(shí)發(fā)生,pending請(qǐng)求到CPU,CPU決策該先進(jìn)哪一個(gè)相應(yīng)的中斷服務(wù)Routine,第二個(gè)問(wèn)題是CPU當(dāng)前已經(jīng)在響應(yīng)某個(gè)中斷服務(wù),此時(shí)來(lái)了另一個(gè)中斷請(qǐng)求,是否允許其打斷當(dāng)前中斷服務(wù)轉(zhuǎn)而響應(yīng)新的中斷請(qǐng)求即我們常說(shuō)的中斷嵌套問(wèn)題,不要告訴我沒(méi)考慮過(guò)哈(如果真是這樣,我只能不客氣的說(shuō),這樣搞單片機(jī)是不負(fù)責(zé)任的,很可能給項(xiàng)目帶來(lái)潛在的風(fēng)險(xiǎn)bug),那樣的話俺也白寫(xiě)了,呵呵。那正題來(lái)了,對(duì)現(xiàn)在紅紅火火的ARM Cortex-M4和M0+兩個(gè)核來(lái)說(shuō),他們是如何解決這兩個(gè)問(wèn)題的呢,因?yàn)檫@兩個(gè)核在中斷優(yōu)先級(jí)管理上略有些區(qū)別(雖然都是NVIC和SCB兩個(gè)寄存器來(lái)管理),所以下面我分開(kāi)來(lái)說(shuō),另外由于中斷優(yōu)先級(jí)管理屬于內(nèi)核問(wèn)題,所以這方面的信息你不會(huì)在各大半導(dǎo)體廠家的官方手冊(cè)中找到,我們只能追根溯源直接到內(nèi)核的老家ARM官網(wǎng)去找,建議大家有興趣的到ARM官網(wǎng)把M4和M0+的內(nèi)核手冊(cè)下載下來(lái)簡(jiǎn)單瞅瞅,可能會(huì)有意想不到的收獲哦,呵呵:

ARM Cortex-M0+中斷優(yōu)先級(jí)和嵌套

  無(wú)論是M0+或者是M4內(nèi)核,實(shí)際上他們兩個(gè)的中斷優(yōu)先級(jí)都是由NVIC和SCB兩個(gè)寄存器來(lái)管理的,在這里我默認(rèn)大家都知道ARM的中斷源分為內(nèi)核中斷和IRQ中斷了哈(我怕再細(xì)講下去又沒(méi)完了,呵呵),而對(duì)IRQ的中斷管理是由NVIC來(lái)主導(dǎo)的,內(nèi)核的中斷管理則是由SCB來(lái)主導(dǎo)的,我們先講IRQ中斷的優(yōu)先級(jí)問(wèn)題(關(guān)于中斷使能和禁能不在本篇討論范圍內(nèi)哈),打開(kāi)M0+的內(nèi)核手冊(cè)找到NVIC_IPR寄存器(Interrupt Priority Registers)如下圖所示: 
   
  這里寫(xiě)圖片描述

  注意觀察我高亮標(biāo)注的幾塊,從這幾塊中可以抽象出核心的幾個(gè)問(wèn)題,第一個(gè)是NVICIPR一共有8個(gè)寄存器,而每個(gè)寄存器管理4個(gè)IRQ中斷,乘法口訣算一下,我們就明白了為啥M0+的IRQ中斷源最多只支持32個(gè)了,再加上16個(gè)內(nèi)核中斷,加法口訣再算一下,也就是說(shuō)M0+最多就是48個(gè)中斷源,所以M0+算是比較好搞的了,一會(huì)兒講M4就該頭疼了,呵呵;第二個(gè)問(wèn)題是優(yōu)先級(jí)寄存器里面的配置值越低表明相應(yīng)的中斷優(yōu)先級(jí)越高;第三個(gè)問(wèn)題是每個(gè)PRIxx的8位中只有最高兩位[7:6]有效,也就是說(shuō)實(shí)際上M0+的優(yōu)先級(jí)只有四個(gè)即0,1,2,3,4,其中0的優(yōu)先級(jí)是最高的;第四個(gè)問(wèn)題,為啥我放到最后說(shuō)呢,因?yàn)檫@是比較容易忽略的問(wèn)題,即word-accessible,也就是說(shuō)這幾個(gè)寄存器都只能按字操作,切記不要為了顯示我們的編程技巧而使用指向字節(jié)的指針只對(duì)某個(gè)單獨(dú)中斷的優(yōu)先級(jí)進(jìn)行配置。至于嵌套的問(wèn)題,對(duì)M0+是比較簡(jiǎn)單的,即只要相應(yīng)中斷的優(yōu)先級(jí)比較高即可隨時(shí)搶占比它優(yōu)先級(jí)低的中斷服務(wù)。至于內(nèi)核中斷,其中斷優(yōu)先級(jí)則由SCB模塊的SCB_SHPR寄存器來(lái)管理如下圖所示,實(shí)際上我們平時(shí)常用的就是systemtick中斷,其優(yōu)先級(jí)配置同NVIC,這里就不贅述了。另外,我這里提一下,即如果我們不對(duì)優(yōu)先級(jí)進(jìn)行配置的話,則默認(rèn)相應(yīng)中斷源的向量號(hào)越低其優(yōu)先級(jí)越高,不過(guò)如前面我提到的,我是強(qiáng)烈建議在多中斷的情況最好把每個(gè)用到的中斷優(yōu)先級(jí)都根據(jù)實(shí)際需求進(jìn)行相應(yīng)配置,避免潛在的風(fēng)險(xiǎn)。

  這里寫(xiě)圖片描述

ARM Cortex-M4中斷優(yōu)先級(jí)和嵌套

  我前面提到一句,M4雖然指令集是向下兼容M0+的,但是在中斷優(yōu)先級(jí)管理上是有區(qū)別的,由于M4的中斷源比較多(最多允許256),所以其對(duì)中斷優(yōu)先級(jí)管理是略有些復(fù)雜的,不過(guò)一定要仔細(xì)看下去,因?yàn)槲覀兤綍r(shí)會(huì)比較常用到,但是我敢肯定不是所有人的用法是正確的,為啥?待我下面繼續(xù)分解(放心,還沒(méi)完呢,呵呵),先繼續(xù)上圖:

  這里寫(xiě)圖片描述  
   
  繼續(xù)找上圖亮點(diǎn),一個(gè)是M4最高支持16+4*60=256個(gè)中斷源,第二個(gè)這60個(gè)寄存器是可以按字節(jié)操作的(我們可以繼續(xù)的裝逼用指針了,哈哈),第三個(gè)跟M0+一樣即值越小優(yōu)先級(jí)越高,最后則是最大的區(qū)別,即每個(gè)寄出去你的8位數(shù)據(jù)都是可以定義其中斷優(yōu)先級(jí)了,說(shuō)到這里,a question is raised,那是不是意味著M4的優(yōu)先級(jí)最高可以256個(gè)級(jí)別呢。我只能說(shuō),大家想多了,呵呵,繼續(xù)看下圖吧,可見(jiàn)PRIGROUP定義了這8位數(shù)據(jù)到底該怎么用了,這里出現(xiàn)了兩個(gè)新名詞,即Group Priority和Subpriority,至于這兩個(gè)優(yōu)先級(jí)是什么意思那大家繼續(xù)看圖2,大家先仔細(xì)理解理解,我喝口水先。。。Ok,繼續(xù)回來(lái),從下面兩張圖可以看到在M4內(nèi)核中,其對(duì)中斷優(yōu)先級(jí)管理是分了兩個(gè)部分,一個(gè)是組優(yōu)先級(jí)一個(gè)是子優(yōu)先級(jí),即組優(yōu)先級(jí)是管理?yè)屨純?yōu)先級(jí)的(即是否能嵌套),即高的組優(yōu)先級(jí)中斷(數(shù)值低)可以搶占低的組優(yōu)先級(jí)(數(shù)值高)中斷的,而如果組優(yōu)先級(jí)是一樣的,即使子優(yōu)先級(jí)比正在執(zhí)行的中斷的子優(yōu)先級(jí)高也是不能搶占的,那又有同志們要問(wèn)問(wèn)題了,那子優(yōu)先級(jí)有啥用?呵呵,正如圖2所說(shuō),在組優(yōu)先級(jí)一致的情況下,多個(gè)中斷請(qǐng)求同時(shí)發(fā)生,這樣的情況下子優(yōu)先級(jí)高的可以先執(zhí)行的,而子優(yōu)先級(jí)低的則只能暫時(shí)pending等著了,呵呵。而回到PRIGROUP的作用是用來(lái)配置NVIC的8位數(shù)據(jù)域是如何分配給搶占優(yōu)先級(jí)和子優(yōu)先級(jí)的,而一般情況下,最好是各留4位給這二位大爺和小爺了,即每位爺最多可配16個(gè)優(yōu)先級(jí),而PRIGROUP是從哪來(lái)的呢,呵呵,實(shí)際上它是SCB_AIRCR寄存器的其中3位如圖3所示。

  這里寫(xiě)圖片描述

  這里寫(xiě)圖片描述

  這里寫(xiě)圖片描述

  呼。。。終于搞完了,總算把這個(gè)問(wèn)題給寫(xiě)出來(lái)了,我腦袋里可以騰出點(diǎn)地方給其他問(wèn)題了,哈哈。另外實(shí)際上我上面寫(xiě)了這么多理論的東西,但是ARM早已在CMSIS庫(kù)里的頭文件中把這部分函數(shù)API給出來(lái)了(core_cm4.h和core_cm0plus.h),而我之所以不閑麻煩的還是把這個(gè)寫(xiě)出來(lái),還是我這個(gè)知其然也要知其所以然的思想在作怪了。不過(guò)最后,我還是給出M0+和M4的中斷優(yōu)先級(jí)配置的兩個(gè)配置供廣大博友參考吧,然后其他就不多聊了,未完待續(xù):

M0+

NVIC_SetPriority(PORTA_IRQn, 1);

NVIC_SetPriority(PORTB_IRQn, 2);

M4+

NVIC_SetPriorityGrouping(0x03);

NVIC_SetPriority(PORTA_IRQn, NVIC_EncodePriority(0x03,1, 2));

NVIC_SetPriority(PORTB_IRQn, NVIC_EncodePriority(0x03, 2, 2));


關(guān)鍵字:ARM  Cortex-M4  Cortex-M0+  中斷優(yōu)先級(jí)  嵌套搶占 引用地址:ARM Cortex-M4和Cortex-M0+中斷優(yōu)先級(jí)及嵌套搶占問(wèn)題

上一篇:stm32學(xué)習(xí)——中斷的優(yōu)先級(jí)設(shè)置
下一篇:學(xué)習(xí)筆記——Cortex-M0中斷控制和系統(tǒng)控制

推薦閱讀

近日,三星宣布在多倫多、莫斯科和英國(guó)劍橋開(kāi)設(shè)三個(gè)新的人工智能研究中心。這也是三星在人工智能領(lǐng)域邁出的一大步,該公司曾于2016年收購(gòu)了由Siri創(chuàng)始人創(chuàng)建的實(shí)驗(yàn)室Viv Labs,以開(kāi)發(fā)自己的AI語(yǔ)音助理Bixby。?去年11月從谷歌跳槽到三星的高級(jí)副總裁、全球研究主管Larry Heck表示,這些研究中心的創(chuàng)建表明了我們?nèi)匀惶幱谌斯ぶ悄艿脑缙陔A段,與此同時(shí)一...
隨著獲客成本的不斷提高,通過(guò)AI洞悉用戶需求、判斷用戶偏好、了解用戶行為的產(chǎn)品研發(fā)、運(yùn)營(yíng)體系的建立,不僅會(huì)讓企業(yè)的試錯(cuò)成本大幅降低,還會(huì)讓爆款產(chǎn)生的幾率不斷提升。被媒體稱為“海外版字節(jié)跳動(dòng)”的赤子城,自2013年發(fā)布其第一款A(yù)I產(chǎn)品Solo Launcher, 憑借AI技術(shù)提供的猜你喜歡、信息流推薦等功能,受到了無(wú)數(shù)用戶的青睞和業(yè)界的高度評(píng)價(jià)。登上89...
因疫情延后的2020年全國(guó)兩會(huì)于5月21日拉開(kāi)帷幕,以5G、工業(yè)互聯(lián)網(wǎng)和人工智能為核心的“新基建”首次被寫(xiě)入今年的政府工作報(bào)告,一度成為兩會(huì)的熱詞之一。在今年新冠疫情的特殊背景下,隨著新基建持續(xù)火熱,機(jī)器人行業(yè)的發(fā)展也被按下了“快進(jìn)鍵”。2020年全國(guó)兩會(huì)召開(kāi)期間,正值國(guó)內(nèi)機(jī)器人應(yīng)用發(fā)展迅猛。與會(huì)人大代表和政協(xié)委員的提案近期紛紛出臺(tái),全國(guó)兩...

史海拾趣

問(wèn)答坊 | AI 解惑

dsp視頻教程(電子科技大學(xué) )

第一章簡(jiǎn)略地討論數(shù)字信號(hào)處理的基本思想及其優(yōu)越性。 第二章介紹世界各大公司DSP處理器的最新發(fā)展,以及系統(tǒng)設(shè)計(jì)工程師們最為關(guān)心的如何評(píng)價(jià)和選擇DSP處理器的問(wèn)題。 第三章比較系統(tǒng)地介紹目前在國(guó)內(nèi)外應(yīng)用最廣泛的TI的TMS320C2000、C5000和C600 ...…

查看全部問(wèn)答∨

機(jī)動(dòng)車(chē)超速自動(dòng)監(jiān)測(cè)系統(tǒng)測(cè)速原理綜述

近年來(lái),隨著我國(guó)道路交通的快速發(fā)展,特別是城市機(jī)動(dòng)車(chē)數(shù)量的猛漲,帶來(lái)了很多交通問(wèn)題和安全隱患。為此,公安交通管理部門(mén)在近兩年加大了對(duì)非現(xiàn)場(chǎng)處罰設(shè)施的投入,而機(jī)動(dòng)車(chē)超速自動(dòng)監(jiān)測(cè)系統(tǒng)(俗稱“電子警察”)就是其中之一。機(jī)動(dòng)車(chē)超速自動(dòng)監(jiān)測(cè) ...…

查看全部問(wèn)答∨

加密IC

加密IC保護(hù)您的軟件,防止別人抄襲。 有關(guān)產(chǎn)品的介紹:采用智能卡專(zhuān)用硬件平臺(tái),內(nèi)置寶興達(dá)公司自主開(kāi)發(fā)的嵌入式系統(tǒng),專(zhuān)門(mén)為保護(hù)用戶代碼,防止非法訪問(wèn)和外部攻擊而設(shè)計(jì)的新一代安全芯片。硬件平臺(tái)為8051內(nèi)核,采用串口通訊協(xié)議,用戶編程基于標(biāo) ...…

查看全部問(wèn)答∨

2009-2010網(wǎng)絡(luò)最熱的 嵌入式學(xué)習(xí)|ARM|Linux|wince|ucos|經(jīng)典資料與實(shí)例分析 完整版

前段時(shí)間做了一個(gè)關(guān)于ARM9 2440資料的匯總帖,很高興看到2@1ic和eeworld等論壇朋友們的支持和鼓勵(lì)。當(dāng)年學(xué)單片機(jī)的時(shí)候datasheet和學(xué)習(xí)資料基本都是在論壇上找到的,也遇到很多好心的高手朋友,耐心的回答我提出的問(wèn)題。感激、圖報(bào),很簡(jiǎn)單的想法。 ...…

查看全部問(wèn)答∨

虛擬機(jī)和win7相互ping通

虛擬機(jī)里面安裝的redhat的eth0有三種連接方式,Bridged ,NAT (Network Address Translation) ,Host-only。 我的理解是: bridg相當(dāng)于eth0和電腦主機(jī)本地連接并行屬于一個(gè)局域網(wǎng)里面的機(jī)臺(tái)。 nat相當(dāng)于虛擬主機(jī)是一個(gè)路由器,和eth8相連,而eth ...…

查看全部問(wèn)答∨

關(guān)于串口中斷接收影響主循環(huán)的問(wèn)題

我是用的單片機(jī)是PIC18F46K80,編譯環(huán)境是MPLAB C18 V3.41,MPLAB IDE V8.92。 我是用串口助手給單片機(jī)發(fā)信息,每次發(fā)送7個(gè)字節(jié),每隔20ms或者100ms或者200ms,串口接收使用數(shù)組存儲(chǔ)。 我的主循環(huán)里我使用switch(與串口接收的數(shù)據(jù)無(wú)關(guān)),異常出 ...…

查看全部問(wèn)答∨

KL46 Bootloader的疑問(wèn)

看了Freescale的有關(guān)Bootloader文檔,AN2295,有些疑問(wèn) 1,第31頁(yè)有管ICF文件這么一段描述: 編輯后ROM開(kāi)始地址為0x4000,Code Start地址為什么只增加了0x3FF0?(0x4400 - 0x410),而不是增加0x4000呢?2.我現(xiàn)在使用的是MKL46系列CortexM0+ M ...…

查看全部問(wèn)答∨

好久沒(méi)搞EE_FPGA了,大家有什么需求和期待呢?

好久沒(méi)有折騰EE_FPGALE ,大家有什么需求和期待呢?各抒己見(jiàn),看看如何開(kāi)展FPGA學(xué)習(xí),如何提升FPGA技能…

查看全部問(wèn)答∨

誰(shuí)有移植到msp430f2418上的ucosii系統(tǒng)嗎?

RT,最近想把ucosii系統(tǒng)移植到msp430f2418上,但是從來(lái)沒(méi)有成功過(guò)。 網(wǎng)上也有不少資料,但是大多是針對(duì)msp430f149移植的,149的CPU寄存器是16位的,2418的CPU寄存器是20位的。兩者的移植有很多的不同。官網(wǎng)給的移植程序是針對(duì)5和6系列的,雖然他們 ...…

查看全部問(wèn)答∨

adc同時(shí)使用12路,問(wèn)題

請(qǐng)教一下各位 手冊(cè)上寫(xiě)著 adc共分成adc0,adc1 每個(gè)adc擁有0~3個(gè)採(cǎi)樣序列 每個(gè)採(cǎi)樣序列,採(cǎi)樣不同 通道 是不是意味著,我同時(shí)只能使用8個(gè)adc通道呢??? …

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 开化县| 嘉禾县| 迁安市| 曲靖市| 秦安县| 三江| 四平市| 界首市| 张家川| 密山市| 甘肃省| 韶山市| 太和县| 会理县| 盱眙县| 冀州市| 苗栗县| 岢岚县| 江源县| 福建省| 百色市| 大英县| 仁化县| 尼勒克县| 涟源市| 泰兴市| 兰坪| 台山市| 达孜县| 高雄市| 屯门区| 石门县| 疏勒县| 南岸区| 临江市| 济宁市| 永修县| 台湾省| 石门县| 屏东市| 徐汇区|