|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
3 |+ U- r) ^- m n& M //kEY GPIO set
: m+ i' J3 c5 @5 A: X% p9 p. @ GPIOBank0Pin1PinMuxSetup();1 q: X: }, ~* W* P4 C
GPIOBank0Pin2PinMuxSetup();# N8 i1 Q# A! A
GPIOBank6Pin8PinMuxSetup();) m8 t c/ Q0 m. g! c
GPIOBank6Pin9PinMuxSetup();2 W8 m5 |- Z8 S7 M. O2 r) ^
GPIOBank6Pin10PinMuxSetup();
! G6 `1 g& I' z GPIOBank6Pin11PinMuxSetup();
+ O1 E4 C2 A4 E GPIOBank8Pin12PinMuxSetup();1 @) \8 U6 u) l$ L% y5 A/ o
GPIOBank8Pin14PinMuxSetup();
# t9 `; J% t5 V! M. w GPIOBank8Pin15PinMuxSetup();8 W, W0 f$ v* Y) n, j8 d
- C x4 c u& b5 X1 C* {* g6 R# b
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
# ~' L! {' ?) \! @ GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);: y5 |( q5 r9 K1 x9 s, e
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
" ~# N! S2 w% Y' n- K! _ GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);5 k! k9 m4 ]& m) d) I+ |+ G1 B
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
+ [+ h3 W" T2 g7 V# j GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
, A* w, U; B$ L+ D7 j GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);( K: q/ }6 P: N" m5 g
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
7 u; n" E2 I% K7 \) | GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
7 p" i# l9 x$ j, ~0 Q+ h3 N2 ]% q* v9 d) O4 Y% u5 {
" f) E c- }1 j1 f8 {. r
// 底板按键中断
0 d M3 f, T4 Y; R8 J+ @. Z GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
. w2 n* ~0 F; k3 N: ? GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none3 u! \) [7 D) F$ d$ ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
# s8 ]# r% D' |3 F GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok z7 }3 `8 D Z! x8 M+ [1 p
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
/ P0 D5 D+ g! @' j GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right! x9 r# m% N8 s6 ?3 T5 c* X4 B
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
! E& T/ Z4 p! ^$ \ C GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel; f6 m; x- O5 j% E7 i
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
0 x1 i, X6 l! |$ R1 f/ m, j
6 c9 v5 C" M! @0 @ // 使能 GPIO BANK 中断
( u; z/ d7 `6 P' Q" a/ O3 g3 w2 x GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0, U; U1 q! L8 v# s( U& ]
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
2 ~* S6 A) _ r- x; W5 _1 O- y. ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
& |. i8 ]% t# ?
) p, p4 F% A* h9 t: j( P( S& X // 注册中断服务函数' ^( _8 J7 g5 D- R3 n C; W& o
IntRegister(C674X_MASK_INT6, USER0KEYIsr);% J; {( t }3 S. t+ V9 w
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);, G/ C3 Y$ u: P$ [2 \; x
IntEnable(C674X_MASK_INT6);& X, L4 r5 M# r% i5 W
& x( r4 {; i/ T: T5 K4 t
IntRegister(C674X_MASK_INT7, USER1KEYIsr); D+ H S+ k( R2 o# ?; }
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
# {0 v* G1 z1 l. H2 O4 } IntEnable(C674X_MASK_INT7);' s$ \/ V3 E7 d; v4 } F% i# Q
- n% Y4 l/ f& F& b: C/ Z IntRegister(C674X_MASK_INT8, USER2KEYIsr);
& o2 _. C( F4 y, L6 M# {$ L IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
0 j J, j9 D6 v. c5 ^" w$ J IntEnable(C674X_MASK_INT8);
" b( `, A0 q7 @5 ]但是现在收不到中断,请问问题出在那里?谢谢7 l1 L' x! j4 U3 w+ `
|
|