日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。

發布時間:2025/6/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ?CMSIS:Cortex Microcontroller Software Interface Standard


CMSIS對異常和中斷標識符、中斷處理函數名以及中斷向量異常號都有嚴格的要求。異常和中斷標識符需加后綴_IRQn,系統
異常向量號必須為負值,而設備的中斷向量號是從 0 開始遞增,具體的定義在 M451Series.h 文件,如下所示(以 M451 微控制器系列為例):下面是?M451 的中斷異常:

typedef enum IRQn { /****** Cortex-M4 Processor Exceptions Numbers ******/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ MemoryManagement_IRQn = -12, /*!< 4 Memory Management Interrupt */ BusFault_IRQn = -11, /*!< 5 Bus Fault Interrupt */ UsageFault_IRQn = -10, /*!< 6 Usage Fault Interrupt */ SVCall_IRQn = -5, /*!< 11 SV Call Interrupt */ DebugMonitor_IRQn = -4, /*!< 12 Debug Monitor Interrupt */ PendSV_IRQn = -2, /*!< 14 Pend SV Interrupt */ SysTick_IRQn = -1, /*!< 15 System Tick Interrupt */ /****** M451 Specific Interrupt Numbers *****/ BOD_IRQn = 0, /*!< Brown Out detection Interrupt */ IRC_IRQn = 1, /*!< Internal RC Interrupt */ PWRWU_IRQn = 2, /*!< Power Down Wake Up Interrupt */ RAMPE_IRQn = 3, /*!< SRAM parity check failed Interrupt */ CKFAIL_IRQn = 4, /*!< Clock failed Interrupt */ RTC_IRQn = 6, /*!< Real Time Clock Interrupt */ TAMPER_IRQn = 7, /*!< Tamper detection Interrupt */ WDT_IRQn = 8, /*!< Watchdog Timer Interrupt */ WWDT_IRQn = 9, /*!< Window Watchdog Timer Interrupt */ EINT0_IRQn = 10, /*!< External Input 0 Interrupt */ EINT1_IRQn = 11, /*!< External Input 1 Interrupt */ EINT2_IRQn = 12, /*!< External Input 2 Interrupt */ EINT3_IRQn = 13, /*!< External Input 3 Interrupt */ EINT4_IRQn = 14, /*!< External Input 4 Interrupt */ EINT5_IRQn = 15, /*!< External Input 5 Interrupt */ GPA_IRQn = 16, /*!< GPIO Port A Interrupt */ GPB_IRQn = 17, /*!< GPIO Port B Interrupt */ GPC_IRQn = 18, /*!< GPIO Port C Interrupt */ GPD_IRQn = 19, /*!< GPIO Port D Interrupt */ GPE_IRQn = 20, /*!< GPIO Port E Interrupt */ GPF_IRQn = 21, /*!< GPIO Port F Interrupt */ SPI0_IRQn = 22, /*!< SPI0 Interrupt */ SPI1_IRQn = 23, /*!< SPI1 Interrupt */ BRAKE0_IRQn = 24, /*!< BRAKE0 Interrupt */ PWM0P0_IRQn = 25, /*!< PWM0P0 Interrupt */ PWM0P1_IRQn = 26, /*!< PWM0P1 Interrupt */ PWM0P2_IRQn = 27, /*!< PWM0P2 Interrupt */ BRAKE1_IRQn = 28, /*!< BRAKE1 Interrupt */ PWM1P0_IRQn = 29, /*!< PWM1P0 Interrupt */ PWM1P1_IRQn = 30, /*!< PWM1P1 Interrupt */ PWM1P2_IRQn = 31, /*!< PWM1P2 Interrupt */ TMR0_IRQn = 32, /*!< Timer 0 Interrupt */ TMR1_IRQn = 33, /*!< Timer 1 Interrupt */ TMR2_IRQn = 34, /*!< Timer 2 Interrupt */ TMR3_IRQn = 35, /*!< Timer 3 Interrupt */ UART0_IRQn = 36, /*!< UART 0 Interrupt */ UART1_IRQn = 37, /*!< UART 1 Interrupt */ I2C0_IRQn = 38, /*!< I2C 0 Interrupt */ I2C1_IRQn = 39, /*!< I2C 1 Interrupt */ PDMA_IRQn = 40, /*!< Peripheral DMA Interrupt */ DAC_IRQn = 41, /*!< DAC Interrupt */ ADC00_IRQn = 42, /*!< ADC0 Source 0 Interrupt */ ADC01_IRQn = 43, /*!< ADC0 Source 1 Interrupt */ ACMP01_IRQn = 44, /*!< Analog Comparator 0 and 1 Interrupt */ ADC02_IRQn = 46, /*!< ADC0 Source 2 Interrupt */ ADC03_IRQn = 47, /*!< ADC0 Source 3 Interrupt */ UART2_IRQn = 48, /*!< UART2 Interrupt */ UART3_IRQn = 49, /*!< UART3 Interrupt */ SPI2_IRQn = 51, /*!< SPI2 Interrupt */ USBD_IRQn = 53, /*!< USB device Interrupt */ USBH_IRQn = 54, /*!< USB host Interrupt */ USBOTG_IRQn = 55, /*!< USB OTG Interrupt */ CAN0_IRQn = 56, /*!< CAN0 Interrupt */ SC0_IRQn = 58, /*!< Smart Card 0 Interrupt */ TK_IRQn = 63 /*!< Touch Key Interrupt */ } IRQn_Type;


CMSIS 對系統異常處理函數以及普通的中斷處理函數名的定義也有所不同。

(1)系統異常處理函數名需加后綴“_Handler”。

(2)普通中斷處理函數名則加后綴“_IRQHandler”。

這些異常中斷處理函數被定義為 weak 屬性, 以便在其他的文件中重新實現時不出現重復定義的錯誤。這些處理函數的地址用來填充中斷異常向量表,并在啟動代碼中給以聲明,例如:BOD_IRQHandler、WDT_IRQHandler、TMR0_IRQHandler、UART0_IRQHandler 等。

總結

以上是生活随笔為你收集整理的CMSIS对异常和中断标识符、中断处理函数名以及中断向量异常号都有严格的要求。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。