飞凌OK6410学习之中断的学习 继续。。
2013-03-01 16:35
323 查看
假设我们中断多了,是不是要在程序中一个个的把中断写上去呢?答案是否定的,这里我们就需要用到中断向量控制器;
S3c6410中含有两个中断控制寄存器:
中断控制器的处理机制:
1、发生中断后,矢量地址VICxVECTADDR0~VICxVECTADDR31相应一个寄存器的值就会赋给VICxADDRESS
2、中断服务寄存器就可以根据VICxADDRESS中的值来分辨是哪一个中断,发生中断,肯定该寄存器不为0
下面给出一个例子:
首先,对中断进行初始化
初始化函数为
接下来是初始化代码:
注意:这里有一个很重要的问题涉及到C语言中断的函数指针了
Int_Init函数的参数是一个函数指针unsigned是对这个函数的地址强制进行类型转换
请继续看下面的代码
现在大家应该了解了吧:
下面大概讲讲这个程序处理中断的顺序:
1、 首先对中断进行初始化,同时程序会把interrupt0的地址赋给rVIC0VECTADDR0
2、 当出现外部中断的时候,此时硬件会自动的把rVIC0VECTADDR0的值赋给rVIC0ADDRESS,而rVIC0ADDRESS就能够辨别出是哪组中断(这里指的是这组中断
3、 此时程序会进入中断0的处理程序中,但那时具体还不清楚到底是哪个中断,通过以下代码具体实现
我们外部中断的程序就学习到这里。
S3c6410中含有两个中断控制寄存器:
中断控制器的处理机制:
1、发生中断后,矢量地址VICxVECTADDR0~VICxVECTADDR31相应一个寄存器的值就会赋给VICxADDRESS
2、中断服务寄存器就可以根据VICxADDRESS中的值来分辨是哪一个中断,发生中断,肯定该寄存器不为0
下面给出一个例子:
首先,对中断进行初始化
初始化函数为
接下来是初始化代码:
注意:这里有一个很重要的问题涉及到C语言中断的函数指针了
Int_Init函数的参数是一个函数指针unsigned是对这个函数的地址强制进行类型转换
请继续看下面的代码
现在大家应该了解了吧:
下面大概讲讲这个程序处理中断的顺序:
1、 首先对中断进行初始化,同时程序会把interrupt0的地址赋给rVIC0VECTADDR0
2、 当出现外部中断的时候,此时硬件会自动的把rVIC0VECTADDR0的值赋给rVIC0ADDRESS,而rVIC0ADDRESS就能够辨别出是哪组中断(这里指的是这组中断
3、 此时程序会进入中断0的处理程序中,但那时具体还不清楚到底是哪个中断,通过以下代码具体实现
我们外部中断的程序就学习到这里。
相关文章推荐
- 飞凌OK6410学习之中断的学习
- 飞凌OK6410之时钟的学习
- 飞凌OK6410之异常模式的学习
- 飞凌Ok6410之SDRAM的学习
- 飞凌OK6410之触摸屏的学习
- 飞凌OK6410之IIC的学习1
- 飞凌OK6410之IIC的学习2
- 飞凌OK6410之LCD的学习
- 飞凌OK6410学习之串口的学习
- 飞凌OK6410学习之看门狗
- 基于platform的ok6410按键中断实验
- ARM嵌入式学习--OK6410裸板程序--1.GPIO控制LED
- 嵌入式成长轨迹65 【智能家居项目】【ARM 飞凌ok6410】【飞凌开发板——SD卡一键烧写】
- ok6410 按键中断点LED灯
- S3C6410 TFT-LCD控制器的设置(LCD型号为WXCAT43,开发板为飞凌OK6410B)
- OK6410-A开发板学习-③uboot移植(1)
- ok6410学习笔记(5.阻塞字符驱动)
- 飞凌ok6410开发板Linux使用RTC时钟
- 嵌入式成长轨迹66 【智能家居项目】【ARM 飞凌ok6410】【移植智能家居代码时环境调试问题集锦 】
- (2)ok6410学习之链接器脚本学习