ARM9外部中断功能测试
2016-05-03 来源:eefocus
* 文件名称:EINT.c
* 实现功能:测试外部中断的操作
* 作者:jianqi
* 版本:1.0
#include'2440addr.h' //包含2440相关寄存器的设置
#include'def.h'
#define LED1 5
#define LED2 6
#define LED3 7
#define LED4 8
#define KEY1 1
#define KEY2 4
#define KEY3 2
#define KEY4 0
#define Bit(x) (1<
#define Output(x) (1<<2*x) //将对应IO置为输出
#define LED_On(x) rGPBDAT=~Bit(x) //点亮对应LED
* 名称:Key1_ISR
* 功能:key1控制LED1亮灭
* 入口参数:无
* 出口参数:无
void __irq Key1_ISR(void) //EINT1中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<1); //清除中断标志位
rINTPND=rINTPND |(0x01<<1); //清除中断标志位
led=rGPBDAT&(0x1<
if (led==0)
{
rGPBDAT=rGPBDAT|(0x1<
}
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
}
* 名称:Key2_ISR
* 功能:key2控制LED2亮灭
* 入口参数:无
* 出口参数:无
void __irq Key2_ISR(void) //EINT4中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<4); //清除中断标志位
rINTPND=rINTPND |(0x01<<4);//清除中断标志位
if(rEINTPEND&(1<<4))
{
rEINTPEND=rEINTPEND|(0x1<<4); //清除中断标志位
led=rGPBDAT&(0x1<
if (led ==0)
{
rGPBDAT=rGPBDAT|(0x1<
}
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
}
}
* 名称:Key3_ISR
* 功能:key3控制LED3亮灭
* 入口参数:无
* 出口参数:无
void __irq Key3_ISR(void) //EINT2中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<2); //清除中断标志位
rINTPND=rINTPND |(0x01<<2); //清除中断标志位
led=rGPBDAT&(0x1<
if (led==0)
{
rGPBDAT=rGPBDAT|(0x1<
}
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
}
* 名称:Key4_ISR
* 功能:key4控制LED4亮灭
* 入口参数:无
* 出口参数:无
void __irq Key4_ISR(void) //EINT0中断服务程序
{
int led;
rSRCPND=rSRCPND|0x1; //清除中断标志位
rINTPND=rINTPND |0x1; //清除中断标志位
led=rGPBDAT&(0x1<
if(led==0)
{
rGPBDAT=rGPBDAT|(0x1<
}
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
}
* 名称:Main
* 功能:初始化外部中断相关寄存器
* 入口参数:无
* 出口参数:无
void Main(void)
{
rGPBCON=(1<<2*LED1)|(1<<2*LED2)|(1<<2*LED3)|(1<<2*LED4);//设置四个LED为输出
rGPBDAT=0xffff; //全部熄灭
rGPFCON=0xaaaa; //0~7外部中断
rEXTINT0=0x20222; //下降沿中断
rEINTMASK=~(1<<4); //不屏蔽外部中断0,1,2,4
rEINTPEND=(1<<4); //0,1,2,4产生中断
rSRCPND=0x17; //外部中断
rINTPND=0x17; //外部中断使能
rINTMOD=0x00; //全部为IRQ中断
rINTMSK=~0x17; //不屏蔽外部中断
pISR_EINT0=(U32)Key4_ISR;
pISR_EINT1=(U32)Key1_ISR;
pISR_EINT2=(U32)Key3_ISR;
pISR_EINT4_7=(U32)Key2_ISR;
while(1)
{
;
}
}
进入单片机查看更多内容>>
* 实现功能:测试外部中断的操作
* 作者:jianqi
* 版本:1.0
#include'2440addr.h' //包含2440相关寄存器的设置
#include'def.h'
#define LED1 5
#define LED2 6
#define LED3 7
#define LED4 8
#define KEY1 1
#define KEY2 4
#define KEY3 2
#define KEY4 0
#define Bit(x) (1<
#define LED_On(x) rGPBDAT=~Bit(x) //点亮对应LED
* 名称:Key1_ISR
* 功能:key1控制LED1亮灭
* 入口参数:无
* 出口参数:无
void __irq Key1_ISR(void) //EINT1中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<1); //清除中断标志位
rINTPND=rINTPND |(0x01<<1); //清除中断标志位
led=rGPBDAT&(0x1<
{
rGPBDAT=rGPBDAT|(0x1<
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
* 名称:Key2_ISR
* 功能:key2控制LED2亮灭
* 入口参数:无
* 出口参数:无
void __irq Key2_ISR(void) //EINT4中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<4); //清除中断标志位
rINTPND=rINTPND |(0x01<<4);//清除中断标志位
if(rEINTPEND&(1<<4))
{
rEINTPEND=rEINTPEND|(0x1<<4); //清除中断标志位
led=rGPBDAT&(0x1<
{
rGPBDAT=rGPBDAT|(0x1<
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
}
* 名称:Key3_ISR
* 功能:key3控制LED3亮灭
* 入口参数:无
* 出口参数:无
void __irq Key3_ISR(void) //EINT2中断服务程序
{
int led;
rSRCPND=rSRCPND|(0x01<<2); //清除中断标志位
rINTPND=rINTPND |(0x01<<2); //清除中断标志位
led=rGPBDAT&(0x1<
{
rGPBDAT=rGPBDAT|(0x1<
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
* 名称:Key4_ISR
* 功能:key4控制LED4亮灭
* 入口参数:无
* 出口参数:无
void __irq Key4_ISR(void) //EINT0中断服务程序
{
int led;
rSRCPND=rSRCPND|0x1; //清除中断标志位
rINTPND=rINTPND |0x1; //清除中断标志位
led=rGPBDAT&(0x1<
{
rGPBDAT=rGPBDAT|(0x1<
else
{
rGPBDAT=rGPBDAT&~(0x1<
}
* 名称:Main
* 功能:初始化外部中断相关寄存器
* 入口参数:无
* 出口参数:无
void Main(void)
{
rGPBCON=(1<<2*LED1)|(1<<2*LED2)|(1<<2*LED3)|(1<<2*LED4);//设置四个LED为输出
rGPBDAT=0xffff; //全部熄灭
rGPFCON=0xaaaa; //0~7外部中断
rEXTINT0=0x20222; //下降沿中断
rEINTMASK=~(1<<4); //不屏蔽外部中断0,1,2,4
rEINTPEND=(1<<4); //0,1,2,4产生中断
rSRCPND=0x17; //外部中断
rINTPND=0x17; //外部中断使能
rINTMOD=0x00; //全部为IRQ中断
rINTMSK=~0x17; //不屏蔽外部中断
pISR_EINT0=(U32)Key4_ISR;
pISR_EINT1=(U32)Key1_ISR;
pISR_EINT2=(U32)Key3_ISR;
pISR_EINT4_7=(U32)Key2_ISR;
while(1)
{
;
}
}
下一篇:RO段、RW段和ZI段的简单理解
相关文章
- arm处理器中a5 a8 a9,v6 v7,arm7 arm9 arm11都是依据什么来分类的
- ARM9和ARM11的区别
- LRF020 DRIVER FOR LINUX(BASED ON TQ2440/ARM9)
- AD电阻转换---那些年我们一起玩mini2440(arm9)裸机
- 【嵌入式】用Qt给ARM9(mini2440)添加软件键盘,添加动态链接库
- 【技术支持】ARM9开发板Qt环境的搭建
- ARM9无线遥控视频实时监控小车(二)--------摄像头舵机控制模块
- ARM9无线遥控视频实时监控小车(一)--------小车的电机控制模块
- 给ARM9(S3C2440)添加驱动的三种方法
- 关于ARM9 S3C2440 wince6.0 内存 128M的使用问题
最新器件