感慨于志锋能写出那么好的编程总结心得,6410的我就不重写了,自己写写2440的吧。(程序参考文件夹:Int_Test)
1、6410调试的条件之一是下载u-boot到Nand Flash中或者自己编写一份初始化代码由AXD命令烧写进去,而2440则不同,2440编程用uVision4作为编译器,开发板的初始化工作在汇编文件S3C2440A.s中编写好了。当然中断的初始化工作也在其中。6410中断采用中断向量控制器管理中断,编程比较简单。而2440采用中断向量表和多个寄存器配合工作,需要我们自己一个个操作,所以比较麻烦,但对学习很有帮助。
2、关于S3C2440A.s中中断初始化工作参考文档:中断的整个流程分析
3、在main函数中开始引脚初始化:函数在2440lib.c中定义(将对应的按键引脚设置为中断模式,并设置EXTINTn的中断信号触发方式。注:以下程序有些引脚是其他功能的)。
4、接下来是中断初始化(先为IRQ除外的其他部分异常设置异常处理函数,然后对中断过程相关的寄存器进行初始化,再对外部中断的专用寄存器做初始化)
5、最后是我们的测试函数
在该函数中主要有以下几个步骤:
- 配置GPGCON,设置6个按键对应的GPGx管脚功能为外部中断引脚EINT
- 设置中断触发方式
- 将按键中断处理程序(这里只需要函数名,接下来编写函数)注册,入口地址对应EINT8_23中断IRQ
- 清除中断挂起寄存器和启动中断
- 等待中断产生
6、编写中断处理函数
这里参考文件是比较通用的,除了测试函数外,可以不修改其他代码的情况下修改测试函数的功能。