(转)ARM9(S3C2440)的中断系统——…
来源:互联网 发布:java项目开发技术难点 编辑:程序博客网 时间:2024/06/08 10:19
转载地址:http://www.360doc.com/content/11/1123/11/7725999_166692855.shtml
中断控制程序编写步骤
主程序
1.先清除中断源挂起寄存器(SRCPND)和中断挂起寄存器(INTPND),可用rSRCPND= rSRCPND和rINTPND=rINTPND来完成;
对于一个特定中断源的中断服务程序中,SRCPND寄存器的相应位必须被清除目的是下次能正确得到同一个中断源的中断请求。如果你从中断服务程序返回却没有清除该位,中断控制器将操作好像又有同一个中断源的中断请求到来。换言之,如果SRCPND的一个特殊位置1,其总是认为一个有效的中断请求等待服务。
清除相应位的时间依赖于用户的需求。如果你想收到另一个来此同一个中断源的有效请求,你应该清除相应的位,然后使能中断。
你可以通过写数据到这个寄存器来清除 SRCPND寄存器的某个位。你可以通过对相应位置1 来清除相应位。如果你对相应位写 0,则该位的数值保持不变。
中断模式寄存器 INTMOD
该寄存器包括 32位,每位与一个中断源相关。如果某位置 1,相应的中断将在FIQ模式下处理。否则在IRQ模式下操作。请注意仅有一个中断源能够在FIR模式下服务,也就是说,INTMOD仅有一个位可以被置1。
4.设中断服务函数地址,S3C2410 在 2410addr.h中定义了 40个宏,设置了系统支持的中断服务函数的指针,设中断服务函数地址就是把我们编写的中断服务函数的地址(就是中断服务函数的名字)赋予相应的函数指针。每个中断源的中断服务函数指针名是固定的:pISR+中断源。
5.设中断触发方式,触发方式有5种,有上升沿、下降沿、双沿、低电平、高电平触发方式,外部中断触发方式在外部中断控制寄存器(EXTINTn)中设定。如EINT0 触发方式在 EXTINT0[2:0] 中设定,[2:0]=000 低电平、 001高电平、 01X下降沿、 10X上升沿、 11X双沿触发,
6.取消总中断屏蔽和子中断屏蔽,等待中断。例如通过rEINTMASKrEINTMASK&=~(1<<11);
rINTMASK&=~(BIT_EINT0|BIT_EINT8_23);来实现。
中断服务程序
1.在中断服务程序中,先屏蔽中断,防止其他中断产生干扰我们中断服务程序的执行;
2.执行中断服务程序;
3.清中断源挂起寄存器(SRCPND)和中断挂起寄存器(INTPND);
4.取消总中断屏蔽和子中断屏蔽,等待新中断产生;
5.中断返回
下面是具体的程序应用:
#include"2440addr.h"
static void __irqKey_ISR();//中断函数声明
void delay(intx)//延时函数
{
while(x)
}
voidledMain(void)
{
rGPBCON = 0x1dd7fc; //GPB5,GPB6,GPB8,GPB10设置为输出,连接了4个LED
rGPBDAT|=0x560;//4个LED全灭
rGPFCON&=~((3<<0)|(3<<4)|(3<<6)|(3<<8));
rEINTPEND=(1<<4);//清外部中断挂起寄存器,清的是外部中断4
}
static void __irqKey_ISR()//中断服务函数,__irq用来声明通用中断函数
{
charkey;//用来标识是哪一个按键按下
}
下面在说一下用到的ClearPending()
该函数在头文件2440addr.h中:
__inline voidClearPending(int bit)//输入参数是相应位为1的值
{
}
- (转)ARM9(S3C2440)的中断系统——…
- 一 ARM9(S3C2440)的中断系统——理论知识
- ARM9(S3C2440)的中断系统
- 一 ARM9(S3C2440)的中断系统——程序实例讲解
- s3c2440 ARM9 裸机驱动第二篇—2440系统时钟
- S3C2440系统中断(转)
- ARM9 S3C2440最小系统
- ARM9 S3C2440最小系统
- ARM9 S3C2440按键中断方式点亮LED的汇编程序
- 三 ARM9(S3C2440)的串口UART——理论知识
- ARM9(S3C2440)的LCD显示——程序实例讲解
- ARM920T(S3C2440)的中断系统
- ARM9——中断学习
- 简单的轮询与中断系统(基于s3c2440)
- ARM9的中断体系结构
- ARM9的中断控制器
- S3C2440系统中断
- S3C2440系统中断
- ASSERT :DEF:ENDIAN_CHANGE
- ARM启动文件2440init.s分析
- 伪指令LTORG
- ARM汇编中ldr与adr的区别(转)
- tomcat6 数据源设置
- (转)ARM9(S3C2440)的中断系统——…
- ARM MMU工作原理剖析(转)
- s3c2440的UART用法
- 高效FIFO串口双机通信在ARM7上的实…
- 对UART的FIFO的理解(转)
- S3C2440A的UART
- S3C2440之UART操作(FIFO中断模式)
- 九 ARM9(2440)对nand flash…
- 九 ARM9(2440)对nand flash…