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

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

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

STM32入門(mén)學(xué)習(xí)筆記之中斷架構(gòu)(上)

jf_78858299 ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-02-16 09:57 ? 次閱讀

3.1 STM32F103中斷概述

Cortex-M3內(nèi)核支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級(jí)的可編程中斷設(shè)置。但STM32并沒(méi)有使用Cortex-M3內(nèi)核的全部東西,而是只用了它的一部分。STM32有84個(gè)中斷,包括16個(gè)內(nèi)核中斷和68個(gè)可屏蔽中斷,具有16級(jí)可編程的中斷優(yōu)先級(jí)。而我們常用的就是這68個(gè)可屏蔽中斷,但是STM32的68個(gè)可屏蔽中斷,在STM32F103ZET6中只有60個(gè)。

3.2 STM32F103中斷優(yōu)先級(jí)

3.2.1 優(yōu)先級(jí)結(jié)構(gòu)

STM32F103的中斷分為搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)兩種,這兩種優(yōu)先級(jí)的順序是搶占優(yōu)先級(jí)高于響應(yīng)優(yōu)先級(jí),假設(shè)存在兩個(gè)事件,那就會(huì)存在以下幾種可能:

(1)情況1:事件1和事件2的搶占優(yōu)先級(jí)都是1,事件1的響應(yīng)優(yōu)先級(jí)為1,事件2的響應(yīng)優(yōu)先級(jí)為2,那么事件1和事件2同時(shí)發(fā)生的時(shí)候,CPU優(yōu)先處理事件1,然后處理事件2;

(2)情況2:事件1和事件2的響應(yīng)優(yōu)先級(jí)都是1,事件1的搶占優(yōu)先級(jí)為2,事件2的搶占優(yōu)先級(jí)為1,那么,事件1和事件2同時(shí)發(fā)生的時(shí)候,CPU優(yōu)先處理事件2,然后處理事件1;

(3)情況3:事件1的響應(yīng)優(yōu)先級(jí)為1,事件2的響應(yīng)優(yōu)先級(jí)為2,事件1的搶占優(yōu)先級(jí)為2,事件2的搶占優(yōu)先級(jí)為1,當(dāng)事件1和事件2同時(shí)發(fā)生的時(shí)候,CPU優(yōu)先處理事件2,然后處理事件1;

通過(guò)上面兩種情況,我們可以發(fā)現(xiàn),當(dāng)搶占優(yōu)先級(jí)一致,誰(shuí)的響應(yīng)優(yōu)先級(jí)的數(shù)小,誰(shuí)的優(yōu)先級(jí)就高,中斷同時(shí)發(fā)生的時(shí)候CPU就先處理誰(shuí);如果搶占優(yōu)先級(jí)不一樣,那么無(wú)所謂響應(yīng)優(yōu)先級(jí),誰(shuí)的搶占優(yōu)先級(jí)數(shù)小,優(yōu)先級(jí)就高,中斷同時(shí)發(fā)生的時(shí)候CPU就先處理誰(shuí)。

STM32F103的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)各有4級(jí),即0~3,根據(jù)乘法原理,也從側(cè)面反映了16級(jí)可編程的中斷優(yōu)先級(jí),并且搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)的數(shù)量是可以設(shè)置的,通過(guò)中斷分組來(lái)配置,中斷分組和優(yōu)先級(jí)數(shù)量的對(duì)應(yīng)如下表所示。

搶占優(yōu)先級(jí)數(shù)量 響應(yīng)優(yōu)先級(jí)處理
0 0 4
1 1 3
2 2 2
3 3 1
4 4 0

3.2.2 相關(guān)寄存器

(1) 中斷應(yīng)用和復(fù)位控制寄存器AIRCR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
KEY[15:0]
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
END - GROUP[2:0] - REQ ACT RST

Bit 31~Bit 16:激活代碼,寫(xiě)入0x05FA激活寄存器

Bit 15:指示數(shù)據(jù)的字節(jié)序(這只能在重置后更改)

0:表示小尾數(shù)

1:表示大字節(jié)序

Bit 10~Bit 8:中斷優(yōu)先級(jí)分組

Bit 2:請(qǐng)求芯片控制邏輯產(chǎn)生復(fù)位

Bit 1:清除所有活動(dòng)狀態(tài)信息中的異常

Bit 0:重置Cortex-M3處理器(調(diào)試邏輯除外)

(2) 中斷使能寄存器組 :ISER

在STM32中,ISER寄存器一共有3個(gè),ISER[0]的0到31位對(duì)應(yīng)中斷031,ISER[1]的0到31位對(duì)應(yīng)中斷3263,ISER[2]的0到3對(duì)應(yīng)中斷64~67,如果需要使能某個(gè)中斷,必須設(shè)置對(duì)應(yīng)的ISER位為1,要清除的話可以設(shè)置ICER寄存器組對(duì)應(yīng)位為1,或者對(duì)ISER寫(xiě)0,但是對(duì)于ICER寄存器組寫(xiě)0是不起作用的。

(3) 中斷優(yōu)先級(jí)控制寄存器組 :IP

對(duì)于STM32,優(yōu)先級(jí)控制寄存器IP一共有68個(gè),對(duì)應(yīng)著68個(gè)中斷,每個(gè)寄存器的結(jié)構(gòu)都是相同的,如下圖所示。

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
PrePriority[1:0] SubPriority[1:0] -

Bit 7~Bit 6:搶占優(yōu)先級(jí)

Bit 5~Bit 4:響應(yīng)優(yōu)先級(jí)

3.2.3 中斷優(yōu)先級(jí)配置函數(shù)

/***************************************************

Name :NVIC_Init

Function :設(shè)置NVIC

Parameter :

PrePriority :搶占優(yōu)先級(jí)

SubPriority :響應(yīng)優(yōu)先級(jí)

Channel :中斷編號(hào)

Group :中斷分組 0~4

Return :None

***************************************************/

void NVIC_Init( u8 PrePriority, u8 SubPriority, u8 Channel, u8 Group )

{

u32 temp, temp1 ;

//設(shè)置分組

temp1 = ( ~Group )&0x07 ; //取后三位

temp1 <<= 8 ;

temp = SCB->AIRCR ; //讀取先前的設(shè)置

temp &= 0x0000F8FF ; //清空先前分組

temp |= 0x05FA0000 ; //寫(xiě)入鑰匙

temp |= temp1 ;

SCB->AIRCR = temp ; //設(shè)置分組

//設(shè)置優(yōu)先級(jí)

temp = ( u32 )PrePriority<<( 4-Group ) ;

temp |= SubPriority&( 0x0f>>Group ) ;

temp &= 0x0F ; //取低四位

NVIC->ISER[ Channel/32 ] |= ( 1<

NVIC->IP[ Channel ] |= temp<<4 ; //設(shè)置響應(yīng)優(yōu)先級(jí)和搶斷優(yōu)先級(jí)

}

3.3 外部中斷EXIT結(jié)構(gòu)

3.3.1 EXIT概述

外部中斷/事件控制器由連接線設(shè)備中的多達(dá)20個(gè)邊緣檢測(cè)器或其他設(shè)備中的19個(gè)邊緣檢測(cè)器組成,用于生成事件/中斷請(qǐng)求。每條輸入線可以獨(dú)立配置以選擇類(lèi)型(事件或中斷)和相應(yīng)的觸發(fā)事件(上升或下降或兩者)。每條線也可以獨(dú)立屏蔽。

對(duì)于STM32來(lái)說(shuō),每一個(gè)端口都可以配置為外部中斷,根據(jù)中斷信號(hào)的類(lèi)型都可以單獨(dú)配置上升沿觸發(fā)或者下降沿觸發(fā),中斷服務(wù)函數(shù)相互獨(dú)立。

3.3.2 EXIT相關(guān)寄存器

(1) 中斷屏蔽寄存器 :IMR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- M19 M18 M17 M16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
M15 M14 M13 M12 M11 M10 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0

Bit 19~Bit 0:線x上的中斷請(qǐng)求配置位

0:禁止輸入線x上的中斷請(qǐng)求

1:允許輸入線x上的中斷請(qǐng)求

(2) 上升沿觸發(fā)選擇寄存器 :RTSR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- R19 R18 R17 R16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0

Bit 19~Bit 0:線x上的上升沿觸發(fā)事件配置位

0:禁止輸入線x上的上升沿觸發(fā)

1:允許輸入線x上的上升沿觸發(fā)

(3) 下降沿觸發(fā)選擇寄存器 :FTSR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
- F19 F18 F17 F16
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
F15 F14 F13 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 F0

Bit 19~Bit 0:線x上的下降沿觸發(fā)事件配置位

0:禁止輸入線x上的下降沿觸發(fā)

1:允許輸入線x上的下降沿觸發(fā)

聲明:本文內(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)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10904

    瀏覽量

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

    關(guān)注

    5

    文章

    899

    瀏覽量

    41529
  • Cortex-M
    +關(guān)注

    關(guān)注

    2

    文章

    229

    瀏覽量

    29777
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32單片機(jī)學(xué)習(xí)筆記(8):外部中斷

    利用CubMX生成基于32單片機(jī)的HAl庫(kù)工程,然后編寫(xiě)程序在proteus仿真驗(yàn)證。本項(xiàng)目最適合沒(méi)有開(kāi)發(fā)板的同學(xué)學(xué)習(xí),零成本利用仿真軟件率先入門(mén)STM32單片機(jī)。本項(xiàng)目需要實(shí)現(xiàn)的功
    發(fā)表于 07-20 15:32 ?1046次閱讀
    <b class='flag-5'>STM32</b>單片機(jī)<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(8):外部<b class='flag-5'>中斷</b>

    STM32學(xué)習(xí)筆記14:基本問(wèn)題,來(lái)討論一下軟件架構(gòu)

    ,systic時(shí)鐘應(yīng)用stm32學(xué)習(xí)教程13:惡搞,兩只看門(mén)狗STM32學(xué)習(xí)筆記14:基本問(wèn)題,來(lái)討論一下軟件
    發(fā)表于 01-29 09:36

    STM32學(xué)習(xí)筆記(初學(xué)者快速入門(mén))

    STM32學(xué)習(xí)筆記(初學(xué)者快速入門(mén))資料來(lái)自網(wǎng)絡(luò)資源
    發(fā)表于 06-11 20:23

    stm32學(xué)習(xí)之中斷事件

    stm32學(xué)習(xí)之中斷事件 相信很多小伙伴們?cè)缫言?1系列的板子上接觸中斷,大概的概括便是:正在看電影的你,突然來(lái)了快遞,你暫停了電影去簽收了快遞,回來(lái)繼續(xù)看電影這便是一級(jí)
    發(fā)表于 08-17 07:13

    CubeMX入門(mén)STM32 HAL庫(kù)的學(xué)習(xí)筆記

    STM32CubeMX是ST官方開(kāi)發(fā)的一款很好用的軟件,主要用于STM32系列單片機(jī)的硬件驅(qū)動(dòng)層的配置。網(wǎng)上也有一些關(guān)于STM32CubeMX的相關(guān)教程,對(duì)它的相關(guān)操作進(jìn)行說(shuō)明。從今天起,小柯希望能將自己從CubeMX
    發(fā)表于 08-17 06:55

    STM32入門(mén)學(xué)習(xí)筆記 精選資料分享

    STM32入門(mén)學(xué)習(xí)筆記本文為筆者入門(mén)學(xué)習(xí)過(guò)程的記錄,只是零散的記錄了一些個(gè)人不太懂得,覺(jué)得需要經(jīng)
    發(fā)表于 08-24 07:56

    STM32中斷與嵌套快速入門(mén)(NVIC)

    STM32中斷與嵌套快速入門(mén)(NVIC),喜歡的朋友可以下載來(lái)學(xué)習(xí)。
    發(fā)表于 01-15 17:45 ?41次下載

    STM32中斷與嵌套NVIC快速入門(mén)

    STM32 中斷與嵌套NVIC 快速入門(mén),喜歡的朋友可以下載來(lái)學(xué)習(xí)
    發(fā)表于 01-15 17:45 ?20次下載

    STM32各模塊學(xué)習(xí)筆記

    STM32個(gè)模塊學(xué)習(xí)筆記 目錄 STM32筆記之一 中斷優(yōu)先級(jí).................
    發(fā)表于 11-30 03:32 ?3165次閱讀

    stm32之中斷與外部中斷

    前言:1.有51單片機(jī)開(kāi)發(fā)經(jīng)驗(yàn)會(huì)比較容易理解中斷優(yōu)先級(jí);2.本篇博文基于STM32F103RCT6芯片和3.5.0標(biāo)準(zhǔn)庫(kù)編寫(xiě);3.作為自己學(xué)習(xí)的一些心得,如有不足之處,還請(qǐng)前輩多多指教;一
    發(fā)表于 11-22 13:06 ?26次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>之中斷</b>與外部<b class='flag-5'>中斷</b>

    STM32學(xué)習(xí)筆記--中斷系統(tǒng)

    目錄:一、STM32中斷系統(tǒng)二、NVIC中斷管理三、中斷配置相關(guān)函數(shù)一、STM32中斷系統(tǒng)
    發(fā)表于 12-04 18:36 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>--<b class='flag-5'>中斷</b>系統(tǒng)

    STM32學(xué)習(xí)筆記(五)---NVIC

    STM32學(xué)習(xí)筆記(五)—NVIC文章目錄STM32學(xué)習(xí)筆記(五)---NVIC一、NVIC簡(jiǎn)介
    發(fā)表于 12-04 18:51 ?16次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(五)---NVIC

    stm32學(xué)習(xí)筆記-中斷系統(tǒng)

    文章目錄問(wèn)題引入1、中斷系統(tǒng)概述。1.1 為什么要中斷中斷意義)中斷應(yīng)用場(chǎng)合:1.2 中斷處理過(guò)程i.保護(hù)現(xiàn)場(chǎng)ii.執(zhí)行
    發(fā)表于 01-13 10:19 ?0次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>-<b class='flag-5'>中斷</b>系統(tǒng)

    STM32入門(mén)學(xué)習(xí)筆記之中斷架構(gòu)(下)

    Cortex-M3內(nèi)核支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級(jí)的可編程中斷設(shè)置。但STM32并沒(méi)有使用
    的頭像 發(fā)表于 02-16 09:57 ?906次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>入門(mén)</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b><b class='flag-5'>之中斷</b><b class='flag-5'>架構(gòu)</b>(下)

    STM32學(xué)習(xí)筆記一外部中斷

    STM32 的每個(gè) IO 都可以作為外部中斷中斷輸入口。STM32F103 的中斷控制器支持 19 個(gè)外部
    的頭像 發(fā)表于 10-24 14:12 ?1413次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>一外部<b class='flag-5'>中斷</b>