在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

什么是中斷架構(gòu)

汽車電子技術(shù) ? 來源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 17:41 ? 次閱讀

3.1 STM32F103中斷概述

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

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

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

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

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

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

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

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

   STM32F103的搶占優(yōu)先級和響應(yīng)優(yōu)先級各有4級,即0~3,根據(jù)乘法原理,也從側(cè)面反映了16級可編程的中斷優(yōu)先級,并且搶占優(yōu)先級和響應(yīng)優(yōu)先級的數(shù)量是可以設(shè)置的,通過中斷分組來配置,中斷分組和優(yōu)先級數(shù)量的對應(yīng)如下表所示。
搶占優(yōu)先級數(shù)量 響應(yīng)優(yōu)先級處理
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:激活代碼,寫入0x05FA激活寄存器

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

0:表示小尾數(shù)

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

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

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

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

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

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

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

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

對于STM32,優(yōu)先級控制寄存器IP一共有68個(gè),對應(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)先級

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

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

/***************************************************
Name    :NVIC_Init
Function  :設(shè)置NVIC
Parameter  :
      PrePriority  :搶占優(yōu)先級
      SubPriority  :響應(yīng)優(yōu)先級
      Channel    :中斷編號
      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 ;                    //寫入鑰匙
  temp |= temp1 ;     
  SCB->AIRCR = temp ;                    //設(shè)置分組
  //設(shè)置優(yōu)先級
  temp = ( u32 )PrePriority<<( 4-Group ) ;
  temp |= SubPriority&( 0x0f>>Group ) ;
  temp &= 0x0F ;                      //取低四位
  NVIC->ISER[ Channel/32 ] |= ( 1

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

3.3.1 EXIT概述

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

   對于STM32來說,每一個(gè)端口都可以配置為外部中斷,根據(jù)中斷信號的類型都可以單獨(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上的中斷請求配置位

0:禁止輸入線x上的中斷請求

   1:允許輸入線x上的中斷請求

(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ā)

(4) 外部中斷配置寄存器1 :EXTIXR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EXTI3[3:0] EXTI2[3:0] EXTI1[3:0] EXTI0[3:0]

EXTIx[3:0]:EXTIx配置(x = 0~3)

0000:PA[x]引腳 0100:PE[x]引腳 0001:PB[x]引腳 0101:PF[x]引腳

0010:PC[x]引腳 0110:PG[x]引腳 0011:PD[x]引腳

(5) 外部中斷配置寄存器2 :EXTIXR2

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EXTI7[3:0] EXTI6[3:0] EXTI5[3:0] EXTI4[3:0]

EXTIx[3:0]:EXTIx配置(x = 4~7)

0000:PA[x]引腳

0100:PE[x]引腳

0001:PB[x]引腳

0101:PF[x]引腳

0010:PC[x]引腳

0110:PG[x]引腳

0011:PD[x]引腳

(6) 外部中斷配置寄存器3 :EXTIXR3

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EXTI11[3:0] EXTI10[3:0] EXTI9[3:0] EXTI8[3:0]

EXTIx[3:0]:EXTIx配置(x = 8~11)

0000:PA[x]引腳

0100:PE[x]引腳

0001:PB[x]引腳

0101:PF[x]引腳

0010:PC[x]引腳

0110:PG[x]引腳

0011:PD[x]引腳

(7) 外部中斷配置寄存器4 :EXTIXR4

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
EXTI15[3:0] EXTI14[3:0] EXTI13[3:0] EXTI12[3:0]

EXTIx[3:0]:EXTIx配置(x = 12~15)

0000:PA[x]引腳

0100:PE[x]引腳

0001:PB[x]引腳

0101:PF[x]引腳

0010:PC[x]引腳

0110:PG[x]引腳

0011:PD[x]引腳

(8) APB2外設(shè)時(shí)鐘使能寄存器 :APB2ENR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- USART1EN - SPI1EN TIM1EN ADC2EN ADC1EN - IOPEEN IOPDEN IOPCEN IOPBEN IOPAEN - AFIOEN

Bit 14:USART1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 12:SPI1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 11:TIM1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 10:ADC2時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 9:ADC1時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 6:GPIOE時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 5:GPIOD時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 4:GPIOC時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 3:GPIOB時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 2:GPIOA時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

Bit 0:輔助功能IO時(shí)鐘使能(寫1開啟,寫0關(guān)閉)

3.3.3 外部中斷配置函數(shù)

/***************************************************
Name    :EXIT_Config
Function  :外部中斷配置
Parameter  :
      GPIOx:0~6,代表GPIOA~G
      BITx:需要使能的位 
      TRIM:觸發(fā)模式
        1:下升沿
        2:上降沿
        3:任意電平觸發(fā)
Return    :None
***************************************************/
void EXIT_Config( u8 GPIOx, u8 BITx, u8 TRIM )
{
  u8 EXTADDR ;
  u8 EXTOFFSET ;
  EXTADDR = BITx/4 ;                      //得到中斷寄存器組的編號
  EXTOFFSET = ( BITx%4 )*4 ;
  RCC->APB2ENR |= 0x01 ;                    //使能io復(fù)用時(shí)鐘       
  AFIO->EXTICR[ EXTADDR ] &= ~( 0x000F<<EXTOFFSET );      //清除原來設(shè)置
  AFIO->EXTICR[ EXTADDR ] |= GPIOx<<EXTOFFSET ;        //EXTI.BITx映射到GPIOx.BITx
  EXTI->IMR |= 1<<BITx ;                    //開啟line BITx上的中斷
   if( TRIM&0x01 )  EXTI->FTSR |= 1<<BITx ;            //下降沿觸發(fā)
  if( TRIM&0x02 )  EXTI->RTSR |= 1<<BITx ;            //上升降沿觸發(fā)
}

3.4 其他文件的添加

3.4.1 寄存器定義文件

(1)添加用到的NVIC寄存器組和EXTI寄存器組的定義。

圖片

(2)定義寄存器組地址

圖片

3.4.2 sys.h文件

圖片

上圖就是添加子函數(shù)聲明,為了用于其他文件調(diào)用。

3.4.3 sys.c文件

(1)在STM32時(shí)鐘配置函數(shù)之前增加復(fù)位時(shí)鐘和中斷的功能,最終函數(shù)如下圖所示。

圖片

(2)添加剛才的兩個(gè)子函數(shù)

圖片

圖片

至此,sys文件里面最基礎(chǔ)的函數(shù)就全部添加完畢了

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

    關(guān)注

    2

    文章

    1044

    瀏覽量

    40437
  • STM32
    +關(guān)注

    關(guān)注

    2290

    文章

    11017

    瀏覽量

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

    關(guān)注

    9

    文章

    276

    瀏覽量

    60132
收藏 人收藏

    評論

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

    一文詳解STM32F103單片機(jī)中斷架構(gòu)

    Cortex-M3內(nèi)核支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級的可編程中斷設(shè)置。但STM32并沒有使用Cortex-M3內(nèi)核的全部東西,而是只用了
    發(fā)表于 01-19 16:46 ?9503次閱讀
    一文詳解STM32F103單片機(jī)<b class='flag-5'>中斷</b><b class='flag-5'>架構(gòu)</b>

    關(guān)于中斷架構(gòu)在raw os 中的設(shè)計(jì)

    的最大瓶頸是在中斷的驅(qū)動架構(gòu)這里,只要抓好這個(gè)整體,系統(tǒng)的最大關(guān)中斷時(shí)間是可以控制在10 us以下的。落眼于系統(tǒng)設(shè)計(jì)的架構(gòu),抓住事物內(nèi)部的主要矛盾,從宏觀角度處理問題比微觀更為直接有效
    發(fā)表于 02-27 14:23

    關(guān)于helper2416 項(xiàng)目的完成度報(bào)告

    模塊: 1 系統(tǒng)啟動代碼2 系統(tǒng)中斷架構(gòu)3 raw os 的移植4 實(shí)現(xiàn)串口發(fā)送、接收信,基于中斷模式下。5.移植raw os shell 基于上述開發(fā)的串口驅(qū)動,所有外設(shè)的驅(qū)動都基于shell命令來
    發(fā)表于 05-19 15:17

    DSP28377D的從入門到精通(3)——外設(shè)中斷

    本帖最后由 1418497227 于 2020-2-28 09:44 編輯 在基本了解28377的整體芯片硬件架構(gòu)和系統(tǒng)控制功能后,在我們學(xué)習(xí)例程之前有必要先了解一下外設(shè)中斷的一些基本知識
    發(fā)表于 02-26 13:25

    STM32 的核心Cortex-M3 處理器是什么

    標(biāo)準(zhǔn)的存儲映射。嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡稱NVIC)是Cortex-M3 處理器中一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3 的微控制器提供了標(biāo)準(zhǔn)的中斷架構(gòu)
    發(fā)表于 07-23 08:35

    STM32的核心Cortex-M3處理器是什么

    了標(biāo)準(zhǔn)的中斷架構(gòu)和優(yōu)秀的中斷響應(yīng)能力,為超過240個(gè)中斷源提供專門的中斷入口,而且可以賦予每個(gè)中斷
    發(fā)表于 08-02 08:52

    stm32F4有兩種CPU模式

    發(fā)生異常時(shí),會從異常向量表的起始位置讀取4byte (MSP),作為特權(quán)模式的棧stm32F4的中斷架構(gòu)分為:不可屏蔽異常和可屏蔽異常(將中斷看作是一種特殊的異常),不可屏蔽異常是stm32F4的...
    發(fā)表于 08-13 06:09

    STM32的核心Cortex-M3處理器的標(biāo)準(zhǔn)化是什么意思

    提供了標(biāo)準(zhǔn)的中斷架構(gòu)和優(yōu)秀的中斷響應(yīng)能力,為超過240個(gè)中斷源提供專門的中斷入口,而且可以賦予每個(gè)中斷
    發(fā)表于 12-06 07:53

    基于RT-Thread+RA6M4的虛擬儀器中斷開發(fā)方案分享

    大循環(huán)+中斷架構(gòu),對于基于RTOS的系統(tǒng),要了解其底層機(jī)制,調(diào)度等,也必須要先了解芯片的中斷機(jī)制。本章就講講本芯片的中斷。該芯片使用的是CORTEX-M33內(nèi)核,所以需要了解該內(nèi)核的
    發(fā)表于 07-11 11:11

    Windows CENET中斷架構(gòu)分析和高速AD驅(qū)動程序的開發(fā)

    本文分析了Windows CE.NET嵌入式實(shí)時(shí)系統(tǒng)的中斷架構(gòu)和流式驅(qū)動架構(gòu) 及其設(shè)備驅(qū)動程序的開發(fā)方法。實(shí)現(xiàn)了該系統(tǒng)下的高速AD驅(qū)動程序的開發(fā)并進(jìn)行了實(shí)際測試 。
    發(fā)表于 04-18 10:02 ?0次下載

    STM32 的核心Cortex-M3 處理器

    標(biāo)準(zhǔn)的存儲映射。 嵌套中斷向量控制器(Nested Vector Interrupt Controller,簡稱NVIC)是Cortex-M3 處理器中一個(gè)比較關(guān)鍵的組件,它為基于Cortex-M3 的微控制器提供了標(biāo)準(zhǔn)的中斷架構(gòu)
    發(fā)表于 12-01 11:51 ?9次下載
    STM32 的核心Cortex-M3 處理器

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

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

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

    Cortex-M3內(nèi)核支持256個(gè)中斷,其中包含了16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級的可編程中斷設(shè)置。但STM32并沒有使用Cortex-M3內(nèi)核的全部東西,而是只用了
    的頭像 發(fā)表于 02-16 09:57 ?1699次閱讀

    【虹科干貨】FC-NVMe 介紹及性能分析

    ,從而減少IO開銷和延遲。另一方面是優(yōu)化中斷架構(gòu),以實(shí)現(xiàn)可擴(kuò)展IOPs和未來NVMe技術(shù)的可擴(kuò)展性。具體來說,F(xiàn)C-NVMe協(xié)議使用NVMe命令通過經(jīng)驗(yàn)證的光纖通
    的頭像 發(fā)表于 05-24 16:24 ?1302次閱讀
    【虹科干貨】FC-NVMe 介紹及性能分析

    Linux中斷子系統(tǒng)硬件架構(gòu)

    中斷子系統(tǒng)硬件架構(gòu) 一個(gè)完整的設(shè)備中,與中斷相關(guān)的硬件可以劃分為3類,它們分別是:設(shè)備、中斷控制器和CPU本身。 設(shè)備:設(shè)備是發(fā)起中斷的源,
    的頭像 發(fā)表于 09-28 14:09 ?729次閱讀
    Linux<b class='flag-5'>中斷</b>子系統(tǒng)硬件<b class='flag-5'>架構(gòu)</b>
    主站蜘蛛池模板: 寂寞午夜影院 | 看草逼 | 同性同男小说肉黄 | 911国产自产精选 | tv电影天堂 | 亚洲一区 在线播放 | 欧美黄色高清 | 国模于子涵啪啪大胆 | 久久久久久久久久免观看 | 综合网激情五月 | 一区二区三区四区视频在线观看 | 一色桃子juy774在线播放 | 日本wwwwww| 日本天天射 | 一区二区三区四区国产精品 | 国产ar高清视频+视频 | 日本国产黄色片 | 亚洲福利视频网址 | 免费看一毛一级毛片视频 | 欧美性极品xxxxx| 日本污视频网站 | 婷婷丁香亚洲 | 真人实干一级毛片aa免费 | 男女爱爱福利 | 正在播放国产女免费 | 一级黄色日本 | 乱说欲小说又粗又长 | 亚洲特级aaaaaa毛片 | 美女视频一区二区三区 | 婷婷综合久久中文字幕蜜桃三 | jzzjlzz亚洲乱熟在线播放 | 精品三级三级三级三级三级 | 另类专区欧美 | 国产毛片毛片精品天天看 | 黄色xxxx| 免费黄色大片网站 | 男女交性视频免费播放视频 | av手机在线播放 | 精品成人毛片一区二区视 | 欧美性xxxx交 | 99久热成人精品视频 |