|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
* e3 M/ E6 y5 u //kEY GPIO set8 t& W$ u! z3 {- u _) e, |" k+ f6 [ \
GPIOBank0Pin1PinMuxSetup();' j8 x9 {, S7 x2 O
GPIOBank0Pin2PinMuxSetup();
7 f! X& G& z# t- `0 C# T4 I- e1 t r; o GPIOBank6Pin8PinMuxSetup();
) o* ^1 |3 \1 r GPIOBank6Pin9PinMuxSetup();$ i" K7 u, x& e: t0 W
GPIOBank6Pin10PinMuxSetup();
3 ^. V0 V9 v2 ] GPIOBank6Pin11PinMuxSetup();
6 K& b% R. |, d0 Y% q$ {, [ GPIOBank8Pin12PinMuxSetup();
- o8 [* I* X2 Y/ l GPIOBank8Pin14PinMuxSetup();
. T# ^# D, B2 I- E4 {/ e" D GPIOBank8Pin15PinMuxSetup();# F7 |5 C9 ~" N1 O3 l
( m+ B Q3 Y- ~- Z h GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);. ?$ g) @5 @1 D( J2 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);0 e: f# N+ ]- O5 }" n
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);* C: _4 \2 [! q* g' R$ T) B
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
% c+ `0 L0 [& C5 @ GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
1 I3 d* T# a3 a& }/ Z GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
/ ^2 k" N- W) y' |, u, D* H GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
+ K1 q" _$ Q- u9 { GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);1 i0 Z. j) H. [ f) A
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
7 {% M0 G5 a! z" h! I3 o' J
b0 N3 V4 u3 x0 e; K) B; D7 \+ D1 Q6 Y
// 底板按键中断
3 J. g9 X3 G! D/ j3 Y: K B" Y4 } GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none; K: B3 {' I* |6 o5 K( A% p* r) ]
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
; E( u5 t1 u: K7 f GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
$ Z5 D/ I$ [8 y! @: k4 ?5 P GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok8 D8 ]; R. C9 E9 t* E
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down. G% {: Z7 d6 {5 {7 ^0 Y0 F% G; \. U
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right3 K9 c- Z. K* H' J
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
" N9 U+ T* \. g: ]4 n/ b GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel, y: s; |4 A" ` d- S# T3 {* D
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm" G9 W9 Y' X) U! J8 S% ~* V- c3 U6 M& c
' h! e, o L$ k4 g5 i4 d1 I$ p; q; i // 使能 GPIO BANK 中断1 K/ `. k4 ]5 W; p: Q
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
' G9 h* P5 J2 U, l+ O2 l GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
4 ^( S$ | [2 ]" V* s GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
7 Y% c6 G4 O& {/ o e* m, i' f, t9 ~" a! G$ j7 c
// 注册中断服务函数
: G* b6 Q) I8 _ IntRegister(C674X_MASK_INT6, USER0KEYIsr);
$ a' M+ P) J; W IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
. r* S- W/ @7 R4 ], A IntEnable(C674X_MASK_INT6);
$ \- ?. b `8 K. ]1 ^$ ?, G
U3 J, U. E% J% B; @ IntRegister(C674X_MASK_INT7, USER1KEYIsr);
# o& H/ J9 r7 N( h: l: S2 { IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
- N- n* ]. Y2 q6 B6 W! i IntEnable(C674X_MASK_INT7);2 Y2 W, P1 t: b6 ^6 q2 U
6 a* e: U m; W IntRegister(C674X_MASK_INT8, USER2KEYIsr);
I+ J; }7 i$ ?) M IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);% m$ ]2 `6 x: c, }/ E' R7 q
IntEnable(C674X_MASK_INT8);
7 ~. E5 ^, c; {5 F0 S6 Y1 Q但是现在收不到中断,请问问题出在那里?谢谢
$ ?% U- u' q4 h; L: K |
|