|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
! r$ T, W! v/ i2 d //kEY GPIO set* E. s1 m* c# G2 e% T0 E, y8 a+ L
GPIOBank0Pin1PinMuxSetup();
) [$ q; L( ^/ w8 K' k GPIOBank0Pin2PinMuxSetup();1 n. g$ a/ |) T6 x5 `" L, S" k
GPIOBank6Pin8PinMuxSetup();! g( B- H) P+ B* n5 S
GPIOBank6Pin9PinMuxSetup();- t1 d2 t6 x6 a% ]4 T4 u
GPIOBank6Pin10PinMuxSetup();
H( ~ g0 ^3 y* w+ O GPIOBank6Pin11PinMuxSetup();
1 M% J' E& r+ T1 l* Z: v6 `/ h$ l @( B$ f GPIOBank8Pin12PinMuxSetup();6 F) U+ `, g# w6 ~
GPIOBank8Pin14PinMuxSetup();
6 w8 }( R3 ]; B# n, c. y: d& I& A* y6 b GPIOBank8Pin15PinMuxSetup();
0 z/ O( ~1 _4 s: d" o# ?/ _: n2 K+ e Z5 f6 q7 d1 v$ _/ c
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);0 Y: ?& p, g* w
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
2 j, ~3 J2 }8 s GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
: A- C* |1 g' E" s GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
h( D4 Z& J2 \ GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);5 {3 H2 y% l H- v- m9 \# r
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);8 J' @( T3 Y/ S. @1 ?, b' F
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);% k$ z: L" B( V( |
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
; y& W5 `3 Q0 ?# N0 ] GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);/ G; i8 f. W# h$ D: W
! d, X& \/ M; Z
- [' T: z/ j/ R# @6 l* c2 U
// 底板按键中断8 H( @4 M% l' C6 \* G3 F% I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none2 c# }6 n* }5 L+ u
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none: R+ ?! C0 r+ {7 Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left- Y6 a: ?5 v) p; D6 d
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
1 g' s/ t, S( X8 l GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
7 `0 z- H+ b! ?6 i! e1 ^8 p GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
) N4 R, m+ S+ T, m2 [; u& I GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up/ _$ `) S# s* F: ]) C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
( V( e" i) m$ z9 i7 X R+ t GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
: H( Q9 W6 `6 y7 Q5 t* a; U7 i# @, |7 _0 r6 r4 n; V" w
// 使能 GPIO BANK 中断
* j1 O7 C# r5 j GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
+ @+ p9 z# s8 F0 y1 b GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO66 K- o& R! E& W1 a
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
}9 `9 F0 r7 f' g. x; l/ l2 h$ c, L# q1 V# S9 M* x+ t
// 注册中断服务函数
) T9 O( [ {2 P4 U! ]/ j2 q IntRegister(C674X_MASK_INT6, USER0KEYIsr);0 z( q8 X ?. X- X* b6 R
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);0 K6 a/ l! P6 X# r- X" T% t$ m
IntEnable(C674X_MASK_INT6);+ |/ P3 X) t8 Q# R4 O) c. |
: n) K( u8 {. O8 S) [7 P5 T
IntRegister(C674X_MASK_INT7, USER1KEYIsr);' j5 X" l2 C! ?/ O9 K/ s
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);' F& w5 I0 q: \) O
IntEnable(C674X_MASK_INT7);
# e" `$ {7 [! V$ F/ u4 C U6 O- h: B: ]7 J
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
Z. s' [, ^/ Y! j) z IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
4 K$ z' S/ Q0 R) v IntEnable(C674X_MASK_INT8);, O z. }1 C. [* g( i* B- r
但是现在收不到中断,请问问题出在那里?谢谢' ^9 c, H2 B* U* r2 s+ C3 ^
|
|