VIC是处于芯片外设和ARM内核之间的一个模块,对芯片所有外设中断进行管理,决定哪些中断源可以产生中断、产生哪种类型的中断以及中断后执行哪段服务程序。
ARM处理器内核具有两个中断输入:向量中断请求(IRQ)和快速中断请求(FIQ)。向量中断控制器使用32个中断请求输入,可将其编程分配为FIQ或向量IRQ类型。可编程分配机制意味着外设中断的优先级可动态分配和调整。
快速中断请求具有最高优先级。
向量IRQ具有可编程的中断优先级。
*ARM PrimeCell向量中断控制器
*映射到AHB地址空间以高速访问
*支持32个向量IRQ
*16个可编程的中断优先级
*在每个可编程优先级内的硬件优先级固定
*硬件优先级屏蔽
*任何中断都可分配为FIQ
*软件中断功能
中断源分配表
位 |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 |
符号 |
I2S | I2C2 | UART3 | UART2 | TIMER3 | TIMER2 | GPDMA | SD/MMC |
位 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
符号 |
CAN1&2 | USB | Ethernet | BOD | I2C1 | AD0 | EINT3 |
EINT2 LCD |
位 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 |
符号 | EINT1 | EINT0 | RTC | PLL | SSP1 | SPI/SSP0 | I2C0 | PWM0&1 |
位 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
符号 | UART1 | UART0 | TIMER1 | TIMER0 | ARMCore1 | ARMCore0 | - | WDT |
(31:0) 0: 该位对应的中断请求分配为IRQ
1: 该位对应的中断请求分配为FIQ
VICIntSelect=1<<UART1_Num; //将UART1中断分配为FIQ (UART1_Num为UART1的中断通道号)
写0时该位无效,写1时强制产生与该位相关的中断请求。
写0时该位无效,写1时则软件中断寄存器中对应位被清除。
0 对应位的中断请求或软件中断未声明
1 对应位的中断请求或软件中断声明
**确定该中断分配为FIQ还是IRQ中断
**若分配为FIQ,则进行相关的初始化;若分配为IRQ,再进行相关设置
**清除相应中断标志,并使能相应中断
**编写中断服务程序
文章评论(0条评论)
登录后参与讨论