TQ210裸机编程(4)——按键(中断法)
S5PV210有4个向量中断控制器(VIC),每个向量中断控制器包含32个中断源。
当某个中断源产生中断时,CPU会自动的将VICxVECTADDRy(x=0,1,2,3,y=0-31)寄存器的值赋给VICxADDRESS(x=0,1,2,3),因此我们可以把我们的中断处理函数的地址赋给VICxVECTADDRy寄存器,
比如我们有个函数
void key_handle()
{
……
}
我们把key_handle 函数的值赋给VIC0VECTADDR0(外部中断0)
VIC0VECTADDR0 =key_handle;
当外部中断0触发中断时,CPU会自动的将VIC0VECTADDR0的值赋给VIC0ADDRESS,并跳转到这个地址去执行,即执行函数key_handle。
代码如下:
start.S
key.bin: start.o key.oarm-linux-ld -Ttext 0x20000000 -o key.elf $^arm-linux-objcopy -O binary key.elf $@arm-linux-objdump -D key.elf > key.diskey.o : key.carm-linux-gcc -c $< -o $@start.o : start.Sarm-linux-gcc -c $< -o $@clean:rm *.o *.elf *.bin *.dis
将程序下载到内存运行
按下key1,LED1点亮,再次按下key1,LED1熄灭
按下key2,LED2点亮,再次按下key2,LED2熄灭