chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

Cortex-M0中斷控制和系統(tǒng)控制

安芯教育科技 ? 來(lái)源:極術(shù)社區(qū) ? 作者:極術(shù)社區(qū) ? 2022-04-24 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

每一個(gè)外部中斷都有一個(gè)對(duì)應(yīng)的優(yōu)先級(jí)寄存器,Cortex-M0中NVIC-IPR共有8個(gè)寄存器,而每個(gè)寄存器管理4個(gè)IRQ中斷,所以M0的IRQ中斷源最多只支持32個(gè),再加上16個(gè)內(nèi)核中斷,也就是說(shuō)M0最多48個(gè)中斷源。

8dcc7092-c2f1-11ec-bce3-dac502259ad0.png

8de1c0be-c2f1-11ec-bce3-dac502259ad0.png

Cortex-M0采用Armv6-M架構(gòu),優(yōu)先級(jí)寄存器配置位有8位,但是有效位只有最高2位,這個(gè)地方很多人使用了Cortex-M3后一直也認(rèn)為Cortex-M0也是最高3或4位有效位,在arm官方資料中有對(duì)比兩個(gè)版本的差別。因此Cortex-M0可編程優(yōu)先級(jí)有4個(gè),加上3個(gè)固定的優(yōu)先級(jí)(復(fù)位、NMI、HardFault),Cortex-M0總共有7個(gè)中斷優(yōu)先級(jí)。

8df7cdaa-c2f1-11ec-bce3-dac502259ad0.png

Cortex-M0內(nèi)核的中斷優(yōu)先級(jí)寄存器是以最高位(MSB)對(duì)齊的,并且只支持字傳輸,每次訪問(wèn)都會(huì)同時(shí)涉及4個(gè)中斷優(yōu)先級(jí)寄存器。見(jiàn)下圖:

8e104fd8-c2f1-11ec-bce3-dac502259ad0.png

因?yàn)锽it0 - Bit5沒(méi)有使用,所以如果沒(méi)有進(jìn)行寫(xiě)操作讀出都為0。

由于不同的 Cortex-M 系列,其中斷優(yōu)先級(jí)是不一樣的,所以在 CMSIS 庫(kù)中的頭文件中可以查看優(yōu)先級(jí)的數(shù)量 \_\_NVIC\_PRIO\_BITS。

中斷優(yōu)先級(jí)寄存器的編程應(yīng)該在中斷使能之前,其通常是在程序開(kāi)始時(shí)完成的。arm官方資料提示應(yīng)該避免在中斷使能之后改變中斷優(yōu)先級(jí),因?yàn)檫@種情況的結(jié)果在ARMv6-M系統(tǒng)結(jié)構(gòu)是不可預(yù)知的,并且不被Cortex-M0處理器支持。Cortex-M3/M4處理器的情況又有所不同,他們都支持中斷優(yōu)先級(jí)的動(dòng)態(tài)切換。Cortex-M3處理器和Cortex-M0處理器的另外一個(gè)區(qū)別是,Cortex-M3訪問(wèn)中斷優(yōu)先級(jí)寄存器時(shí)支持字節(jié)或半字傳輸,因此可以每次只設(shè)置一個(gè)寄存器。如果需要改變優(yōu)先級(jí),程序中需要關(guān)閉中斷后再重新設(shè)置中斷優(yōu)先級(jí)寄存器。

在 Cortex-M內(nèi)核中,一個(gè)中斷的優(yōu)先級(jí)數(shù)值越低,邏輯優(yōu)先級(jí)卻越高。比如,中斷優(yōu)先級(jí)為2的中斷可以搶占中斷優(yōu)先級(jí)為3的中斷,但反過(guò)來(lái)就不行。換句話說(shuō),中斷優(yōu)先級(jí)2比中斷優(yōu)先級(jí)3的優(yōu)先級(jí)更高。

Cortex-M0處理器對(duì)中斷嵌套的支持無(wú)需任何軟件干預(yù),如果MCU已經(jīng)在運(yùn)行一個(gè)中斷,而有了新的更高優(yōu)先級(jí)的中斷請(qǐng)求,正在運(yùn)行的中斷將會(huì)被暫停,轉(zhuǎn)而執(zhí)行更高優(yōu)先級(jí)的中斷,高優(yōu)先級(jí)中斷執(zhí)行完成后又回到原來(lái)的低優(yōu)先級(jí)中斷。如果出現(xiàn)兩個(gè)同一優(yōu)先級(jí)的中斷,則是判斷誰(shuí)開(kāi)始發(fā)起中斷請(qǐng)求,MCU會(huì)先執(zhí)行同一優(yōu)先級(jí)中首先發(fā)起請(qǐng)求的中斷。

MM32F0130系列中斷向量表:


	

typedefenumIRQn{ NonMaskableInt_IRQn=-14,///

設(shè)置中斷優(yōu)先級(jí)的流程:先讀一個(gè)字,再修改對(duì)應(yīng)字節(jié),最后整個(gè)字寫(xiě)回。

1.1 C代碼

	

void__NVIC_SetPriority() { unsignedlongtemp;//定義一個(gè)臨時(shí)變量 temp=*(volatileunsignedlong)(0xE000E400);//讀取IRP0值 temp&=(0xFF00FFFF|(0xC0<

1.2 匯編代碼

在程序中可以一次設(shè)置多個(gè)中斷優(yōu)先級(jí)。


	

void__NVIC_SetPriority() { LDRR0,=0xE000E100;//設(shè)置使能中斷寄存器地址 MOVSR1,#0x4;//中斷#2 STRR1,[R0];//使能#2中斷 LDRR0,=0xE000E200;//設(shè)置掛起中斷寄存器地址 MOVSR1,#0x4;//中斷#2 STRR1,[R0];//掛起#2中斷 LDRR0,=0xE000E280;//設(shè)置清除中斷掛起寄存器地址 MOVSR1,#0x4;//中斷#2 STRR1,[R0];//清除#2的掛起狀態(tài) }

1.3 CMSIS標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)函數(shù)

	

//設(shè)置中斷優(yōu)先級(jí) __STATIC_INLINEvoid__NVIC_SetPriority(IRQn_TypeIRQn,uint32_tpriority) { if((int32_t)(IRQn)>=0){ NVIC->IP[_IP_IDX(IRQn)]=((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]&~(0xFFUL<SHP[_SHP_IDX(IRQn)]=((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)]&~(0xFFUL<

這里的參數(shù)IRQn為中斷ID號(hào),可以為負(fù),也可以為正。當(dāng)IRQn為負(fù)時(shí),設(shè)置系統(tǒng)異常的優(yōu)先級(jí),當(dāng)IRQn大于等于0時(shí),設(shè)置外設(shè)中斷優(yōu)先級(jí),芯片廠商會(huì)提供中斷向量表IRQn\_Type,應(yīng)用層只需要調(diào)用即可;priority是0、1、2、3,函數(shù)內(nèi)部會(huì)自動(dòng)移位到對(duì)應(yīng)的優(yōu)先級(jí)最高2位。


	

方法一: voidNVIC_SetPriority(TIM1_CC_IRQn,3);//設(shè)置#14中斷的優(yōu)先級(jí)為0xC0 方法二: voidNVIC_Config(void) {NVIC_InitTypeDefNVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel=TIM1_CC_IRQn; NVIC_InitStructure.NVIC_IRQChannelPriority=3; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure); }

設(shè)置好中斷優(yōu)先級(jí)后,用戶還可以讀取當(dāng)前已經(jīng)設(shè)置的中斷優(yōu)先級(jí)。


審核編輯 :李倩


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

    關(guān)注

    31

    文章

    5590

    瀏覽量

    129215
  • Cortex-M0
    +關(guān)注

    關(guān)注

    4

    文章

    127

    瀏覽量

    40257

原文標(biāo)題:技術(shù)分享 | Cortex-M0中斷控制和系統(tǒng)控制(二)

文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    RDMA設(shè)計(jì)7:系統(tǒng)控制模塊設(shè)計(jì)

    數(shù)據(jù)傳輸系統(tǒng)的鏈路狀態(tài)、工作狀態(tài)和性能檢測(cè)數(shù)據(jù)反饋給用戶。其在各個(gè)單元模塊例化了多個(gè)寄存器組,用戶可以通過(guò)讀/寫(xiě)寄存器的方式實(shí)現(xiàn)功能控制及狀態(tài)監(jiān)測(cè)。系統(tǒng)控制模塊將這些寄存器組抽象為一
    發(fā)表于 11-27 08:34

    Cortex-M產(chǎn)品的特色

    的處理能力。 中斷控制器:Cortex-M處理器內(nèi)置了靈活的中斷控制器,能夠支持多種中斷優(yōu)先級(jí)和高效的中斷處理機(jī)制。 訪問(wèn)
    發(fā)表于 11-26 07:22

    為什么cortex-M0+功耗低?

    1. 流水線層級(jí)簡(jiǎn)化 Cortex-M0:采用 3級(jí)流水線(取指、解碼、執(zhí)行)。 更多流水線層級(jí)導(dǎo)致每個(gè)時(shí)鐘周期需激活更多硬件單元,動(dòng)態(tài)功耗較高。 流水線沖突(如分支預(yù)測(cè)錯(cuò)誤)需刷新流水線,浪費(fèi)
    發(fā)表于 11-19 08:15

    PY32F030系列32位ARM Cortex-M0+微控制器介紹

    在嵌入式開(kāi)發(fā)領(lǐng)域,一款性能適配、成本可控且功耗優(yōu)異的 MCU,往往是項(xiàng)目成功的關(guān)鍵。今天要為大家隆重介紹的PY32F030 系列 32 位 ARM Cortex-M0 + 微控制器,正是這樣一款能
    的頭像 發(fā)表于 10-15 16:43 ?702次閱讀

    MSPM0C1106-Q1 汽車(chē) 32MHz Arm? Cortex-M0?+ MCU技術(shù)手冊(cè)

    MSPM0C1105/6 微控制器 (MCU) 是 MSP 高度集成、超低功耗 [32 位 MSPM0 MCU 系列]的一部分,基于 Arm Cortex-M0+ 32 位核心平臺(tái),工
    的頭像 發(fā)表于 10-08 10:53 ?666次閱讀
    MSPM<b class='flag-5'>0</b>C1106-Q1 汽車(chē) 32MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU技術(shù)手冊(cè)

    MSPM0G1507 80MHz Arm? Cortex-M0?+ MCU技術(shù)手冊(cè)

    MSPM0G150x 微控制器 (MCU) 是 MSP 高度集成、超低功耗 32 位 MCU 系列的一部分,基于增強(qiáng)型 Arm Cortex-M0+ 32 位核心平臺(tái),工作頻率高達(dá) 80 MHz
    的頭像 發(fā)表于 09-30 09:08 ?615次閱讀
    MSPM<b class='flag-5'>0</b>G1507 80MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU技術(shù)手冊(cè)

    MSPM0L2228 32MHz Arm? Cortex-M0?+ MCU技術(shù)手冊(cè)

    MSPM0Lx22x 微控制器 (MCU) 是基于 Arm Cortex-M0+ 32 位內(nèi)核平臺(tái)的高度集成、超低功耗 [32 位 MSPM0 MCU 系列]的一部分,工作頻率高達(dá) 3
    的頭像 發(fā)表于 09-29 11:02 ?512次閱讀
    MSPM<b class='flag-5'>0</b>L2228 32MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU技術(shù)手冊(cè)

    在NuMicro? Cortex-M0? 系列,每個(gè)I/O可以承受多少電流吸收和源電流呢?

    在 NuMicro? Cortex-M0? 系列,每個(gè) I/O 可以承受多少電流吸收和源電流?
    發(fā)表于 08-27 15:25

    Texas Instruments MSPM0L110x Arm? Cortex?-M0控制器深度解析

    Texas Instruments MSPM0L110x Arm^?^ Cortex ^?^ -M0控制器 (MCU) 是MSP高度集成、超低功耗32位MSPM
    的頭像 發(fā)表于 08-25 09:56 ?714次閱讀
    Texas Instruments MSPM<b class='flag-5'>0</b>L110x Arm? <b class='flag-5'>Cortex</b>?-<b class='flag-5'>M0</b>微<b class='flag-5'>控制</b>器深度解析

    請(qǐng)問(wèn)NuMicro? Cortex-M0/M4系列可以提供哪些USB器件示例代碼?

    NuMicro? Cortex-M0/M4系列可以提供哪些USB器件示例代碼?
    發(fā)表于 08-19 07:05

    MSPM0G1505 80MHz Arm? Cortex-M0?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0G150x 微控制器 (MCU) 是 MSP 高度集成、超低功耗 32 位 MCU 系列的一部分,該系列基于增強(qiáng)型 Arm Cortex-M0+ 32 位內(nèi)核平臺(tái),運(yùn)行頻率高達(dá) 80MHz
    的頭像 發(fā)表于 04-15 14:08 ?901次閱讀
    MSPM<b class='flag-5'>0</b>G1505 80MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0G3106 80MHz Arm? Cortex-M0?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0G310x 微控制器 (MCU) 是 MSP 高度集成、超低功耗 32 位 MCU 系列的一部分,基于增強(qiáng)型 Arm Cortex-M0+ 32 位內(nèi)核平臺(tái),運(yùn)行頻率高達(dá) 80MHz。這些
    的頭像 發(fā)表于 04-15 11:44 ?954次閱讀
    MSPM<b class='flag-5'>0</b>G3106 80MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0C1103 24MHz Arm? Cortex-M0?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0C110x 微控制器 (MCU) 是 MSP 高度集成的超低功耗 32 位 MCU 系列的一部分,基于增強(qiáng)型 Arm Cortex-M0+ 內(nèi)核平臺(tái),運(yùn)行頻率高達(dá) 24MHz。這些成本優(yōu)化
    的頭像 發(fā)表于 04-15 09:39 ?1080次閱讀
    MSPM<b class='flag-5'>0</b>C1103 24MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0L1227 32MHz Arm? Cortex-M0?+ MCU數(shù)據(jù)手冊(cè)

    MSPM0Lx22x 微控制器 (MCU) 屬于基于 Arm Cortex-M0+ 32 位內(nèi)核平臺(tái)的高度集成、超低功耗 32 位 MSPM0 MCU 系列,工作頻率高達(dá) 32MHz。
    的頭像 發(fā)表于 04-14 15:55 ?932次閱讀
    MSPM<b class='flag-5'>0</b>L1227 32MHz Arm? <b class='flag-5'>Cortex-M0</b>?+ MCU數(shù)據(jù)手冊(cè)

    瑞芯微RK3506(3核ARM+Cortex-A7 + ARM Cortex-M0)工業(yè)核心板選型資料

    創(chuàng)龍科技SOM-TL3506是一款基于瑞芯微RK3506J/RK3506B處理器設(shè)計(jì)的3核ARM Cortex-A7 + ARM Cortex-M0全國(guó)產(chǎn)工業(yè)核心板,主頻高達(dá)1.5GHz。核心板CPU、ROM、RAM、電源、晶振等所有元器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率1
    的頭像 發(fā)表于 04-09 09:04 ?2971次閱讀
    瑞芯微RK3506(3核ARM+<b class='flag-5'>Cortex</b>-A7 + ARM <b class='flag-5'>Cortex-M0</b>)工業(yè)核心板選型資料