www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 單片機 > 單片機
[導讀]什么是NVIC?即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。它是屬于Cortex內(nèi)核的器件,是非常強大與方便的嵌套向量中斷控制器,不可屏蔽中斷 (NMI)和外部中斷都由它來處理,而SYSTICK不是由NVIC來控

什么是NVIC?即嵌套向量中斷控制器(Nested Vectored Interrupt Controller)。它是屬于Cortex內(nèi)核的器件,是非常強大與方便的嵌套向量中斷控制器,不可屏蔽中斷 (NMI)和外部中斷都由它來處理,而SYSTICK不是由NVIC來控制的。

NVIC特性
嵌套向量中斷控制器 NVIC 包含以下特性:
● STM32F405xx/07xx 和 STM32F415xx/17xx 具有 82 個可屏蔽中斷通道, STM32F42xxx
和 STM32F43xxx 具有多達 86 個可屏蔽中斷通道(不包括 Cortex?-M4F 的 16 根中
斷線)
● 16 個可編程優(yōu)先級(stm32F4只使用了 4 位中斷優(yōu)先級)
● 低延遲異常和中斷處理
● 電源管理控制
● 系統(tǒng)控制寄存器的實現(xiàn)
嵌套向量中斷控制器 (NVIC) 和處理器內(nèi)核接口緊密配合,可以實現(xiàn)低延遲的中斷處理和晚
到中斷的高效處理。
包括內(nèi)核異常在內(nèi)的所有中斷均通過 NVIC 進行管理。更多關(guān)于異常和 NVIC 編程的說明,
請參考《 ARM Cortex?-M4F 技術(shù)參考手冊》中的第5 章:異常和第8 章:嵌套向量中斷控
制器。

通過閱讀《STM32xxx參考手冊》中“中斷與事件”一章我們可以知道ST公司生產(chǎn)的stm32芯片對cotex內(nèi)核的嵌套向量中斷控制器NVIC 的使用進行了一些小的改動,

改動一:減少了用于設置優(yōu)先級的比特位。stm32只用了4個比特位來表示中斷的優(yōu)先級

1.中斷優(yōu)先級分組

Cortex-M3中有兩個優(yōu)先級的概念--搶占式優(yōu)先級和響應優(yōu)先級,有人把響應優(yōu)先級稱作'亞優(yōu)先級'或'副優(yōu)先級',每個中斷源都需要被指定

這兩種優(yōu)先級。

具有高搶占式優(yōu)先級的中斷可以在具有低搶占式優(yōu)先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優(yōu)先級的中斷可以嵌套在

低搶占式優(yōu)先級的中斷中。

當兩個中斷源的搶占式優(yōu)先級相同時,這兩個中斷將沒有嵌套關(guān)系,當一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到

前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達,則中斷控制器根據(jù)他們的響應優(yōu)先級高低來決定先處理哪一個;如果他們的搶占

優(yōu)先級和響應優(yōu)先級都相等,則根據(jù)他們在中斷表中的排位順序決定先處理哪一個。

Cortex內(nèi)核具有強大的異常響應系統(tǒng),它把能夠打斷當前代碼執(zhí)行流程的事件分為異常(exception)和中斷(interrupt),并把它們用一個表

管理起來,編號為0~15的稱為內(nèi)核異常,而16以上的則稱為外部中斷這個表就稱為中斷向量表。

正是因為每個中斷源都需要被指定這兩種優(yōu)先級,就需要有相應的寄存器位記錄每個中斷的優(yōu)先級;在Cortex-M3中定義了8個比特位用于設置

中斷源的優(yōu)先級,這8個比特位可以有8種分配方式,如下:

1. 所有8位用于指定響應優(yōu)先級

2. 最高1位用于指定搶占式優(yōu)先級,最低7位用于指定響應優(yōu)先級

3. 最高2位用于指定搶占式優(yōu)先級,最低6位用于指定響應優(yōu)先級

4. 最高3位用于指定搶占式優(yōu)先級,最低5位用于指定響應優(yōu)先級

5. 最高4位用于指定搶占式優(yōu)先級,最低4位用于指定響應優(yōu)先級

6. 最高5位用于指定搶占式優(yōu)先級,最低3位用于指定響應優(yōu)先級

7. 最高6位用于指定搶占式優(yōu)先級,最低2位用于指定響應優(yōu)先級

8. 最高7位用于指定搶占式優(yōu)先級,最低1位用于指定響應優(yōu)先級

以上便是優(yōu)先級分組的概念,但是Cortex-M3允許具有較少中斷源時使用較少的寄存器位指定中斷源的優(yōu)先級。

而 STM32對這個表重新進行了編排,把編號從-3至6的中斷向量定義為系統(tǒng)異常,編號為負的內(nèi)核異常不能被設置優(yōu)先級,如復位(Reset)、

不可屏蔽中斷 (NMI)、硬錯誤(Hardfault)。從編號 7開始的為外部中斷,這些中斷的優(yōu)先級都是可以用戶更改的。詳細的 STM32中斷向量號

可以在startup_stm32f10x_XX.s中查找。

因此STM32把指定中斷優(yōu)先級的寄存器位減少到4位,這4個寄存器位的分組方式如下:

第0組:所有4位用于指定響應優(yōu)先級(16種)

第1組:最高1位用于指定搶占式優(yōu)先級,最低3位用于指定響應優(yōu)先級(8種)

第2組:最高2位用于指定搶占式優(yōu)先級,最低2位用于指定響應優(yōu)先級(4種)

第3組:最高3位用于指定搶占式優(yōu)先級,最低1位用于指定響應優(yōu)先級(2種)

第4組:所有4位用于指定搶占式優(yōu)先級

改動二:stm32增加了外部中斷/事件控制器(EXTI)

EXTI主要特性
EXTI控制器的主要特性如下:
●每個中斷/事件線上都具有獨立的觸發(fā)和屏蔽
●每個中斷線都具有專用的狀態(tài)位
●支持多達 23 個軟件事件/中斷請求
●檢測脈沖寬度低于 APB2 時鐘寬度的外部信號。有關(guān)此參數(shù)的詳細信息,請參見
STM32F4xx數(shù)據(jù)手冊的電氣特性部分。


外部中斷/事件線映射
多達 140個 GPIO(STM32F405xx/07xx和 STM32F415xx/17xx)通過以下方式連接到16 個 外部中斷/事件線:

另外七根EXTI 線連接方式如下:
● EXTI 線16 連接到 PVD輸出
● EXTI 線17 連接到 RTC鬧鐘事件
● EXTI 線18 連接到 USB OTG FS喚醒事件
● EXTI 線19 連接到以太網(wǎng)喚醒事件
● EXTI 線20 連接到 USB OTG HS(在FS 中配置)喚醒事件
● EXTI 線21 連接到 RTC入侵和時間戳事件
● EXTI線 22 連接到 RTC 喚醒事件

那么NVIC能夠管理高達86個可屏蔽中斷,那么都有哪些中斷通道呢?我們可以到"stm32f4xx.h"這個文件中查看,這個頭文件中定義了一個所有通道的枚舉結(jié)構(gòu)體,這個結(jié)構(gòu)體包含了所有NVIC能夠管理的的中斷通道。如下所示。前面八個是不可屏蔽中斷,后面的是可屏蔽中斷,紅色字體部分是EXTI類型中斷通道,由NVIC 與EXIT寄存器共同控制。


/**
* @brief Configuration of the Cortex-M4 Processor and Core Peripherals
*/
#define __CM4_REV 0x0001 /*!< Core revision r0p1 */
#define __MPU_PRESENT 1 /*!< STM32F4XX provides an MPU */
#define __NVIC_PRIO_BITS 4 /*!< STM32F4XX uses 4 Bits for the Priority Levels */
#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
#define __FPU_PRESENT 1 /*!< FPU present */


/**
* @brief STM32F4XX Interrupt Number Definition, according to the selected device
* in @ref Library_configuration_section
*/
typedef enum IRQn
{
/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/
NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */
MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */
BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */
UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */
SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */
DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */
PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */
SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt */
/****** STM32 specific Interrupt Numbers **********************************************************************/
WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */
PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */
TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */
RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */
FLASH_IRQn = 4, /*!< FLASH global Interrupt */
RCC_IRQn = 5, /*!< RCC global Interrupt */
EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */
EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */
EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */
EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */
EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */
DMA1_Stream0_IRQn = 11, /*!< DMA1 Stream 0 global Interrupt */
DMA1_Stream1_IRQn = 12, /*!< DMA1 Stream 1 global Interrupt */
DMA1_Stream2_IRQn = 13, /*!< DMA1 Stream 2 global Interrupt */
DMA1_Stream3_IRQn = 14, /*!< DMA1 Stream 3 global Interrupt */
DMA1_Stream4_IRQn = 15, /*!< DMA1 Stream 4 global Interrupt */
DMA1_Stream5_IRQn = 16, /*!< DMA1 Stream 5 global Interrupt */
DMA1_Stream6_IRQn = 17, /*!< DMA1 Stream 6 global Interrupt */
ADC_IRQn = 18, /*!< ADC1, ADC2 and ADC3 global Interrupts */


#if defined (STM32F40_41xxx)
CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */
CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */
CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */
CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */
EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */
TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break interrupt and TIM9 global interrupt */
TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global interrupt */
TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */
TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */
TIM2_IRQn = 28, /*!< TIM2 global Interrupt */
TIM3_IRQn = 29, /*!< TIM3 global Interrupt */
TIM4_IRQn = 30, /*!< TIM4 global Interrupt */
I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */
I2C1_ER_IRQn = 32, /*!< I2C1 Error Interrupt */
I2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */
I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */
SPI1_IRQn = 35, /*!< SPI1 global Interrupt */
SPI2_IRQn = 36, /*!< SPI2 global Interrupt */
USART1_IRQn = 37, /*!< USART1 global Interrupt */
USART2_IRQn = 38, /*!< USART2 global Interrupt */
USART3_IRQn = 39, /*!< USART3 global Interrupt */
EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */
RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */
OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS Wakeup through EXTI line interrupt */
TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global interrupt */
TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global interrupt */
TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */
TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */
DMA1_Stream7_IRQn = 47, /*!< DMA1 Stream7 Interrupt */
FSMC_IRQn = 48, /*!< FSMC global Interrupt */
SDIO_IRQn = 49, /*!< SDIO global Interrupt */
TIM5_IRQn = 50, /*!< TIM5 global Interrupt */
SPI3_IRQn = 51, /*!< SPI3 global Interrupt */
UART4_IRQn = 52, /*!< UART4 global Interrupt */
UART5_IRQn = 53, /*!< UART5 global Interrupt */
TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */
TIM7_IRQn = 55, /*!< TIM7 global interrupt */
DMA2_Stream0_IRQn = 56, /*!< DMA2 Stream 0 global Interrupt */
DMA2_Stream1_IRQn = 57, /*!< DMA2 Stream 1 global Interrupt */
DMA2_Stream2_IRQn = 58, /*!< DMA2 Stream 2 global Interrupt */
DMA2_Stream3_IRQn = 59, /*!< DMA2 Stream 3 global Interrupt */
DMA2_Stream4_IRQn = 60, /*!< DMA2 Stream 4 global Interrupt */
ETH_IRQn = 61, /*!< Ethernet global Interrupt */
ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */
CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */
CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */
CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */
CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */
OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */
DMA2_Stream5_IRQn = 68, /*!< DMA2 Stream 5 global interrupt */
DMA2_Stream6_IRQn = 69, /*!< DMA2 Stream 6 global interrupt */
DMA2_Stream7_IRQn = 70, /*!< DMA2 Stream 7 global interrupt */
USART6_IRQn = 71, /*!< USART6 global interrupt */
I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */
I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */
OTG_HS_EP1_OUT_IRQn = 74, /*!< USB OTG HS End Point 1 Out global interrupt */
OTG_HS_EP1_IN_IRQn = 75, /*!< USB OTG HS End Point 1 In global interrupt */
OTG_HS_WKUP_IRQn = 76, /*!< USB OTG HS Wakeup through EXTI interrupt */
OTG_HS_IRQn = 77, /*!< USB OTG HS global interrupt */
DCMI_IRQn = 78, /*!< DCMI global interrupt */
CRYP_IRQn = 79, /*!< CRYP crypto global interrupt */
HASH_RNG_IRQn = 80, /*!< Hash and Rng global interrupt */
FPU_IRQn = 81 /*!< FPU global interrupt */
#endif /* STM32F40_41xxx */
} IRQn_Type;

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉