ARM裸机开发(二)中断编程
以下裸机程序基于GT2440,编译器为arm-linux-gcc-4.4.3。 程序布局:源代码由interrupt.S和led.c两个文件组成,interrupt负责初始化工作,led.c里定义了中断处理程序。 程序流程:首先安装异常向量表,在复位异常里关闭看门狗,然后进入普通中断模式,设置普通中断的栈指针(为C语言写的中断处理程序做准备),接着设为特权模式,初始化中断(设置IO管脚,开启中断),最后CPU一直死循环等待外部中断触发。当外部中断到来时,先保护现场,跳到led.c里的handle_irp()函数,在该函数里将四个LED点亮,接着返回,最后恢复现场,返回到死循环。 interrupt.S: 1 //寄存器物理地址宏定义 2 #define WTCON 0x53000000 3 4 #define GPFCON 0x56000050 5 #define nGPF_INT2 (0x02<<4) 6 #define nGPF_INT0 (0x02<<0) 7 #define EXINT0 0x56000088 8 9 #define SRCPND 0X4A000000 10 #define INTMOD 0X4A000004 11 #define INTMSK 0x4A000008 12 #define PRIORITY 0x4A00000C 13 #define