Cortex-M3 异常和中断---基于NXP LPC177x/8x(5)
- UID
- 1029342
- 性别
- 男
|
Cortex-M3 异常和中断---基于NXP LPC177x/8x(5)
其中,参数IRQn为中断ID号,可以为负,也可以为正。当IRQn为负时,设置系统异常的优先级,当IRQn大于等于0时,设置外设中断优先级。__NVIC_PRIO_BITS是指使用到的优先级配置寄存器的位数,LPC177x/8x使用了5位。为什么要使用(8-__NVIC_PRIO_BITS)呢?这是因为优先级配置寄存器是高位对齐的(MSB),这主要方面不同CPU间的移植。参数priority为要设置的优先级值,为0~31,数值越低,表示优先级越大。LPC177x/8x的中断ID为:系统异常ID:
标号 | 中断ID | 描述 | NonMaskableInt_IRQn | -14 | 不可屏蔽中断 | MemoryManagement_IRQn | -12 | Cortex-M3内存管理中断 | BusFault_IRQn | -11 | Cortex-M3 总线Fault中断 | UsageFault_IRQn | -10 | Cortex-M3 用法Fault 中断 | SVCall_IRQn | -5 | Cortex-M3 SV Call中断 | DebugMonitor_IRQn | -4 | Cortex-M3 调试监视中断 | PendSV_IRQn | -2 | Cortex-M3 Pend SV中断 | SysTick_IRQn | -1 | Cortex-M3 系统Tick中断 | 外设中断ID:
标号 | 中断ID | 描述 | 标号 | 中断ID | 描述 | WDT_IRQn | 0 | 看门狗 | EINT3_IRQn | 21 | 外中断3 | TIMER0_IRQn | 1 | 定时器0 | ADC_IRQn | 22 | AD转换 | TIMER1_IRQn | 2 | 定时器1 | BOD_IRQn | 23 | 欠压检测 | TIMER2_IRQn | 3 | 定时器2 | USB_IRQn | 24 | USB | TIMER3_IRQn | 4 | 定时器3 | CAN_IRQn | 25 | CAN | UART0_IRQn | 5 | UART0 | DMA_IRQn | 26 | 通用DMA | UART1_IRQn | 6 | UART1 | I2S_IRQn | 27 | I2S | UART2_IRQn | 7 | UART2 | ENET_IRQn | 28 | 以太网 | UART3_IRQn | 8 | UART3 | MCI_IRQn | 29 | SD/MMC卡I/F | PWM1_IRQn | 9 | PWM1 | MCPWM_IRQn | 30 | 电机控制PWM | I2C0_IRQn | 10 | I2C0 | QEI_IRQn | 31 | 正交编码接口 | I2C1_IRQn | 11 | I2C1 | PLL1_IRQn | 32 | PLL1锁存 | I2C2_IRQn | 12 | I2C2 | USBActivity_IRQn | 33 | USB活动 | Reserved0_IRQn | 13 | 保留 | CANActivity_IRQn | 34 | CAN活动 | SSP0_IRQn | 14 | SSP0 | UART4_IRQn | 35 | UART4 | SSP1_IRQn | 15 | SSP1 | SSP2_IRQn | 36 | SSP2 | PLL0_IRQn | 16 | PLL0锁存 | LCD_IRQn | 37 | LCD | RTC_IRQn | 17 | RTC | GPIO_IRQn | 38 | GPIO | EINT0_IRQn | 18 | 外中断0 | PWM0_IRQn | 39 | PWM0 | EINT1_IRQn | 19 | 外中断1 | EEPROM_IRQn | 40 | EEPROM | EINT2_IRQn | 20 | 外中断2 | | | | 2.2 设置异常/中断的优先级组 Cortex-M3的异常/中断是可以抢占的,高抢占优先级中断可以抢占低抢占优先级中断。NVIC中有个名字叫做“应用程序中断及复位控制寄存器(AIRCR)”的寄存器,该寄存器的bit[10:8]称为优先级分组(PRIGROUP)段,表示的值为0~7,分别对应8个不同的抢占优先级设置。比如优先级分组段为0时,则8位优先级配置寄存器(LPC177x/8x只使用了其中的5位)的bit[7:1]表示抢占优先级,bit[0:0]表示非抢占优先级;再比如优先级分组段为1时,则8位优先级配置寄存器的bit[7:2]表示抢占优先级,bit[1:0]表示非抢占优先级,依次类推。
复位后,优先级分组(PRIGROUP)段默认值为0,也就是则8位优先级配置寄存器(LPC177x/8x只使用了其中的5位)的bit[7:1]表示抢占优先级,bit[0:0]表示非抢占优先级。而LPC177x/8x只使用了8位优先级配置寄存器其中的bit[7:3],所以对于LPC177x/8x微处理器而言,复位后默认32级优先级全部为可抢占优先级。 |
|
|
|
|
|