/* =========================================================================================================================== */
/* ================ 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)中快速引用和处理特定的中断事件。
注意事项
确保在中断服务例程中正确处理每个中断。
避免在中断服务例程中执行耗时操作,以免影响系统的实时性能。
通过这种方式定义中断号,可以提高代码的可读性和可维护性。
文章评论(0条评论)
登录后参与讨论