TQ2440之按键中断
![](../img/eep/emb/emb-59086pzfgjtjmq4b.jpg)
![](../img/eep/emb/emb-59086pzfgjtjmq4b.jpg)
#include "2440addr.h"
#include"option.h"
#define LED1_ON (rGPBDAT &= ~(1<5) ) //置0灯亮,置1灯灭
#define LED1_OFF (rGPBDAT |=(1<5) )
#define LED2_ON (rGPBDAT &= ~(1<6) )
#define LED2_OFF (rGPBDAT |=(1<6) )
#define LED3_ON (rGPBDAT &= ~(1<7) )
#define LED3_OFF (rGPBDAT |=(1<7) )
#define LED4_ON (rGPBDAT &= ~(1<8) )
#define LED4_OFF (rGPBDAT |=(1<8) )
void delay(void)
{
unsigned int i,j;
for(i=0;i<1000;i++)
for(j=0;j<6000;j++)//纯粹是为了灯亮的好看不会闪烁;
;
}
void __irq Key1_ISR(void)//提前定义,不然下边的pISR_EINT那里会报错,原因c语言检测不到函数定义
{
rSRCPND |= (1<1);//清除中断标志位,下面相同
rINTPND |= (1<1);
LED1_ON;
delay();
LED1_OFF;
}
void __irq Key2_ISR(void)
{
rSRCPND |= (1<4);
rINTPND |= (1<4);
rEINTPEND |= (1<4);//使能EINT4,因为它是复用的,所以要加上这句
rEINTMASK &= (~(1<4));//中断屏蔽
LED2_ON;
delay();
LED2_OFF;
}
void __irq Key3_ISR(void)
{
rSRCPND |= (1<2);
rINTPND |= (1<2);
LED3_ON;
delay();
LED3_OFF;
}
void __irq Key4_ISR(void)
{
rSRCPND |= (1<0);
rINTPND |= (1<0);
LED4_ON;
delay();
LED4_OFF;
}
void led_init(void)//初始化灯
{
rGPBCON = 0x15400;//全部设置为I/O输出
rGPBUP = 0x00;//使能上拉电阻
rGPBDAT |= (1<5)|(1<6)|(1<7)|(1<8);//先让灯全灭,不然看不到效果
}
void key_init(void)//初始化中断
{
rGPFCON |= (1<1)|(1<3)|(1<5)|(1<9); //设置寄存器为中断方式
rEXTINT0 |= (1<1)|(1<5)|(1<9)|(1<17);//设置外部中断为下降沿方式触发
rEINTMASK &= (~(1<4));//EINT4中断有效
rEINTPEND |= (1<4);//写1清除EINT4中断标志位
rSRCPND |= (1<0)|(1<1)|(1<2)|(1<4);//EINT0、1、2、4等待请求服务
rINTMSK &= (~(1<0))&(~(1<1))&(~(1<2))&(~(1<4));//设置cpu服务EINT0、1、2、4
rINTPND |= (1<0)|(1<1)|(1<2)|(1<4);//优先级的问题,IRQ决定服务哪个哪个中断源先
pISR_EINT0 = (unsigned)Key4_ISR;
pISR_EINT1 = (unsigned)Key1_ISR;
pISR_EINT2 = (unsigned)Key3_ISR;
}
void Main(void)
{
MMU_Init();
led_init();//初始化灯
key_init();//初始化中断
while(1);//死循环,等待按键中断
}
最近比较懒,好久没开博客看看了,下次再把串口裸机程序发上来,做好了,可是懒得写。最近要复习期末考,做到nand flash的操作裸机程序就暂且放一放,等考完试后再把它完成之后就正式进入驱动的学习,同时可能会学习一下UC/OS ii。
TQ2440按键中 相关文章:
- TQ2440按键中断(11-26)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)