- /*******************************************
- *文件称号: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的外部中止功用
/********************************************文件名称:EINT.c*实现功能:测试外部中断的操作*作者:jianqi*版本:1.0************
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/264422.html