嵌入式开发:中断配置全解析
一.中断源
1.中断触发方式配置:
GPIO1_ICR2 |= (3 << 4);
2.中断源屏蔽寄存器解除屏蔽:
GPIO1_IMR:
GPIO1->IMR |= (1 << 18);
3.中断状态寄存器
GPIO_ISR:
if((GPIO->ISR & (1 << 18)) !=0)
{
//中断处理
GPIO1-> ISR |= (1 << 18)
}
二.GIC
1.GIC初始化
GIC_init();
2.GIC中断使能
GIC_EnableIRQ(99);
3中断优先级设置
GIC_SetPriority(99,0);
4.获取GIC基地址
mrc p15,4,r0,c15,c0,0
5.中断通知寄存器
C_IAR:base+0x200C
add r0,r0,#0x20000
ldr r1,[r0,#0x0C]
6.中断标志寄存器
C_EOIR:base+0x2010
ldr r2,[r0,#0x10]
三.kernal
1.异常向量表基地址映射
mrc p15,0,r0,c1,c0,0
bic r0,r0,#(1 << 13)
orr r0,r0,#(1 << 12)
mcr p15,0,r0,c1,c0,0
__set_VBAR(0x87800000);
2.编写中断向量(汇编)
3.编写IRQ中断服务函数