测试ARM9的外部中断功能
时间:11-20
来源:互联网
点击:
- /*******************************************
- *文件名称:EINT.c
- *实现功能:测试外部中断的操作
- *作者:jianqi
- *版本:1.0
- **********************************************/
- #include"2440addr.h"//包含2440相关寄存器的设置
- #include"def.h"
- #defineLED15
- #defineLED26
- #defineLED37
- #defineLED48
- #defineKEY11
- #defineKEY24
- #defineKEY32
- #defineKEY40
- #defineBit(x)(1
- #defineOutput(x)(1<2*x)//将对应IO置为输出
- #defineLED_On(x)rGPBDAT=~Bit(x)//点亮对应LED
- /*******************************************
- *名称:Key1_ISR
- *功能:key1控制LED1亮灭
- *入口参数:无
- *出口参数:无
- **********************************************/
- void__irqKey1_ISR(void)//EINT1中断服务程序
- {
- intled;
- 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__irqKey2_ISR(void)//EINT4中断服务程序
- {
- intled;
- 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__irqKey3_ISR(void)//EINT2中断服务程序
- {
- intled;
- 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__irqKey4_ISR(void)//EINT0中断服务程序
- {
- intled;
- rSRCPND=rSRCPND|0x1;//清除中断标志位
- rINTPND=rINTPND|0x1;//清除中断标志位
- led=rGPBDAT&(0x1
- if(led==0)
- {
- rGPBDAT=rGPBDAT|(0x1
- }
- else
- {
- rGPBDAT=rGPBDAT&~(0x1
- }
- }
- /*******************************************
- *名称:Main
- *功能:初始化外部中断相关寄存器
- *入口参数:无
- *出口参数:无
- **********************************************/
- voidMain(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)
- {
- ;
- }
- }
ARM9外部中断功 相关文章:
- ARM9外部中断功能测试(11-20)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)