案例:假设按键连接的引脚是GPH2_0,要想在按键按下去的时候以中断的方式,执行一个函数isr().
中断配置操作步骤:
1.首先选择这个引脚相应配置寄存器,GPH2CON,将所在引脚的位设置为外部中断模式,这里就是赋值为0xf,应用的是外部中断16.
2.选择相应的触发方式,因为外部中断16<32,所以在中断向量1的范围内,选择配置中断寄存器EXT_INT_0_CON,这里选择下降沿触发。
3.引脚设置为中断了,中断控制器也要进行相应设置,设置完成之前所有中断都应该是禁止的,排除干扰初始化的因素,这里VIC0INTENCLEAR写1,禁止所有中断
4..引脚自己有了中断功能和方式了,但是还不够,这时候中断向量控制器还不知道,他要知道你选择的是那个中断才可以操作。VIC0INTSELECT这个来选择是IRQ还是FIQ,每一位对应相应中断源,这里选择IRQ,把16位写1就可以了。
5..要设置发生中断后的跳转函数,发送中断后,程序肯定不能在原来地方继续运行了,要发送跳转,因为一个VIC有很多中断源,所以可以采用一个办法,发生中断后先让程序调到某个函数,然后再在这个函数进行判断是哪个中断发生了,在主函数判断代码闲的繁琐。
为了实现这个目的,首先设置入口地址,根据手册可知入口地址是0xD0037400,要让程序先跳转到这个地方,然后在继续根据发生了哪个中断再跳转一次。这里可以用IRQ_handle在汇编里面构建一个全局描述符,用这个为入口地址赋值。平常运行main函数,中断发生跳到IRQ_handle地方,也就