📄 keyscan.c
字号:
#include "def.h"
#include "2410addr.h"
#include "2410lib.h"
#include "2410slib.h"
#include "mmu.h"
#include "uart.h"
#include "timer.h"
static void __irq KeyISR(void)
{
if(rINTPND==BIT_EINT8_23) {
ClearPending(BIT_EINT8_23);
if(rEINTPEND&(1<<11)) {
puts("eint11\n");
rEINTPEND |= 1<< 11;
}
if(rEINTPEND&(1<<19)) {
puts("eint19\n");
rEINTPEND |= 1<< 19;
}
}
if(rINTPND==BIT_EINT0) {
puts("eint0\n");
ClearPending(BIT_EINT0);
}
if(rINTPND==BIT_EINT2) {
puts("eint2\n");
ClearPending(BIT_EINT2);
}
}
void KeyScanInit(void)
{
rGPGCON &= ~((3<<12)|(3<<4));
rGPGCON |= (1<<12)|(1<<4); //GPG6,2 output 0
rGPGDAT &= ~((1<<6)|(1<<2));
rGPECON &= ~((3<<26)|(3<<22));
rGPECON |= (1<<26)|(1<<22); //GPE13,11 output 0
rGPEDAT &= ~((1<<13)|(1<<11));
rEXTINT0 &= ~(7|(7<<8));
rEXTINT0 |= (2|(2<<8)); //set eint0,2 falling edge int
rEXTINT1 &= ~(7<<12);
rEXTINT1 |= (2<<12); //set eint11 falling edge int
rEXTINT2 &= ~(0xf<<12);
rEXTINT2 |= (2<<12); //set eint19 falling edge int
rEINTPEND |= (1<<11)|(1<<19); //clear eint 11,19
rEINTMASK &= ~((1<<11)|(1<<19)); //enable eint11,19
ClearPending(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
pISR_EINT0 = pISR_EINT2 = pISR_EINT8_23 = (U32)KeyISR;
EnableIrq(BIT_EINT0|BIT_EINT2|BIT_EINT8_23);
rGPGCON &= ~(3<<20);
rGPGUP &= ~(1<<10);
// rGPGDAT
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -