首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Cortex-M3 异常和中断---基于NXP LPC177x/8x(5)

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_IRQn0看门狗EINT3_IRQn21外中断3
TIMER0_IRQn1定时器0ADC_IRQn22AD转换
TIMER1_IRQn2定时器1BOD_IRQn23欠压检测
TIMER2_IRQn3定时器2USB_IRQn24USB
TIMER3_IRQn4定时器3CAN_IRQn25CAN
UART0_IRQn5UART0DMA_IRQn26通用DMA
UART1_IRQn6UART1I2S_IRQn27I2S
UART2_IRQn7UART2ENET_IRQn28以太网
UART3_IRQn8UART3MCI_IRQn29SD/MMC卡I/F
PWM1_IRQn9PWM1MCPWM_IRQn30电机控制PWM
I2C0_IRQn10I2C0QEI_IRQn31正交编码接口
I2C1_IRQn11I2C1PLL1_IRQn32PLL1锁存
I2C2_IRQn12I2C2USBActivity_IRQn33USB活动
Reserved0_IRQn13保留CANActivity_IRQn34CAN活动
SSP0_IRQn14SSP0UART4_IRQn35UART4
SSP1_IRQn15SSP1SSP2_IRQn36SSP2
PLL0_IRQn16PLL0锁存LCD_IRQn37LCD
RTC_IRQn17RTCGPIO_IRQn38GPIO
EINT0_IRQn18外中断0PWM0_IRQn39PWM0
EINT1_IRQn19外中断1EEPROM_IRQn40EEPROM
EINT2_IRQn20外中断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级优先级全部为可抢占优先级。
继承事业,薪火相传
返回列表