2025-1-26 11:23
45 次阅读|
0 个评论
/* =========================================================================================================================== */ /* ================ Interrupt Number Definition ================ */ /* =========================================================================================================================== */ typedef enum { /****** Cortex-M0 Processor Exceptions Numbers **************************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ HardFault_IRQn = -13, /*!< 3 Cortex-M0 Hard Fault Interrupt */ SVC_IRQn = -5, /*!< 11 Cortex-M0 SV Call Interrupt */ PendSV_IRQn = -2, /*!< 14 Cortex-M0 Pend SV Interrupt */ SysTick_IRQn = -1, /*!< 15 Cortex-M0 System Tick Interrupt */ /****** MYg0002 specific Interrupt Numbers ******************************************************************/ WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ EXTI11_IRQn = 2, /* EXTI Line 11 interrupt(AWU_WKP) */ FLASH_IRQn = 3, /*!< FLASH global Interrupt */ RCC_IRQn = 4, /*!< RCC global Interrupt */ EXTI0_IRQn = 5, /*!< EXTI Line 0 Interrupt */ EXTI1_IRQn = 6, /*!< EXTI Line 1 Interrupt */ EXTI2_IRQn = 7, /*!< EXTI Line 2 Interrupt */ EXTI3_IRQn = 8, /*!*!< EXTI Line 3 Interrupt */ EXTI4_IRQn = 9, /*!*!< EXTI Line 4 Interrupt */ EXTI5_IRQn = 10, /*!*!< EXTI Line 5 Interrupt */ TIM1_BRK_IRQn = 11, /*!< TIM1 break interrupt */ ADC1_IRQn = 12, /*!< ADC1 Interrupt(combined with EXTI line 8) */ TIM1_UP_TRG_COM_IRQn = 13, /*!< TIM1 Update, Trigger and Commutation Interrupt */ TIM1_CC_IRQn = 14, /*!< TIM1 Capture Compare Interrupt */ TIM2_IRQn = 15, /*!< TIM2 global interrupt */ TIM6_IRQn = 17, /*!< TIM6 global Interrupt */ EXTI6_IRQn = 21, /*!*!< EXTI Line 6 Interrupt */ EXTI7_IRQn = 22, /*!*!< EXTI Line 7 Interrupt */ I2C1_IRQn = 23, /*!< I2C1 Event Interrupt */ SPI1_IRQn = 25, /*!< SPI1 global Interrupt */ USART1_IRQn = 27, /*!< USART1 global Interrupt */ } IRQn_Type; 这段代码定义了一个枚举类型 `IRQn_Type`,用于表示中断号。它包含了 Cortex-M0 处理器的异常中断号和特定于 `MYg0002` 平台的中断号。 枚举成员解释 - Cortex-M0 Processor Exceptions Numbers**: - `NonMaskableInt_IRQn`: 不可屏蔽中断,通常用于处理电源故障等紧急情况。 - `HardFault_IRQn`: 硬件故障中断,当发生严重错误时触发。 - `SVC_IRQn`: 软件中断,用于执行特权操作。 - `PendSV_IRQn`: 挂起服务中断,用于操作系统任务切换。 - `SysTick_IRQn`: 系统定时器中断,通常用于操作系统时基。 - **MYg0002 specific Interrupt Numbers**: - `WWDG_IRQn`: 窗口看门狗中断。 - `EXTI11_IRQn` 到 `EXTI7_IRQn`: 外部中断线中断,用于处理外部事件。 - `FLASH_IRQn`: 闪存全局中断。 - `RCC_IRQn`: 时钟控制全局中断。 - `EXTI0_IRQn` 到 `EXTI5_IRQn`: 其他外部中断线中断。 - `TIM1_BRK_IRQn` 到 `TIM1_CC_IRQn`: 定时器 1 的各种中断。 - `TIM2_IRQn`: 定时器 2 全局中断。 - `TIM6_IRQn`: 定时器 6 全局中断。 - `I2C1_IRQn`: I2C1 事件中断。 - `SPI1_IRQn`: SPI1 全局中断。 - `USART1_IRQn`: USART1 全局中断。 使用场景 这段代码通常用于嵌入式系统中,特别是在使用 STM32 微控制器时。通过定义这些中断号,可以在中断服务例程(ISR)中快速引用和处理特定的中断事件。 注意事项 确保在中断服务例程中正确处理每个中断。 避免在中断服务例程中执行耗时操作,以免影响系统的实时性能。 通过这种方式定义中断号,可以提高代码的可读性和可维护性。