ARM中止的根本进程:
在IRQ0脚给个上升沿后,进程是这样的(比较通用的进程)。
1)假如你没有打开该中止的使能寄存器,没有任何反响。
2)假如你打开了使能寄存器,但在对应的屏蔽寄存器中屏蔽了该中止,也没有任何反响。
3)上述两个寄存器都设置正确了,中止发生了,CPU保存当时程序运转环境,跳到中止进口,ARM芯片一般是0x?地址处。
4)假如你没有设置中止向量,即0x?处不是你的代码,程序就会飞掉,当然也或许正常运转,这种状况一般发生在正好飞到正常代码处。
5)设置好中止向量了,中止向量一般是个跳转句子,跳到你的正式的中止处理进程,在这里你能够封闭一切中止,清中止,处理等等,然后退出。记住某些处理器一定要清中止,不然下次再给个上升沿就没有反响了。
中止途径
假如是irq中止
发生irq异常中止 转到 0x18 1 跳 中止跳
假如启用向量中止形式
主动转向对应向量地址 每地址对应一条跳转指令 2 跳
跳转到中止处理程序
假如运用汇编编写中止处理程序
在该处即可编写处理程序
假如运用c言语编写中止处理程序
需求增加与c言语接口程序 3 跳
办法:1 汇编编写
在内存空间界说一贯量表,用来寄存各中止c言语中止处理程序进口地址[即函数进口地址],
在上述程序跳转处处编写 将c言语处理程序进口地址放入pc (即跳转到c函数处)。
2 c编写
在内存空间界说指针表[与汇编向量表对应],用来寄存各中止汇编转向c函数进口地址,
编写中止处理函数,将对应中止指针内容放入函数进口地址。
假如不启用中止向量形式
从0x18直接转向中止处理程序即可
小结: 上述1 跳为向量中止形式主动完结,可加速寻觅中止源。
2 跳为与c言语相结合,汇编和c使用一起界说的中止向量地址表完结挂钩。