|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
5 S! @- @9 q- |4 d2 Z //kEY GPIO set
, Q! Q$ F, o% P GPIOBank0Pin1PinMuxSetup();" w! P4 c$ z! Q- P7 j; T% M/ N+ D3 d; N. V
GPIOBank0Pin2PinMuxSetup();; n; `. ]9 R3 }/ `3 N( f0 L6 i9 }
GPIOBank6Pin8PinMuxSetup();
6 E8 M0 e9 x$ S4 o GPIOBank6Pin9PinMuxSetup();
2 V4 \6 P9 O& k7 p7 G GPIOBank6Pin10PinMuxSetup();
! Y' t8 v% k1 w4 W. K$ P GPIOBank6Pin11PinMuxSetup();; R3 X( a6 _$ Y3 O0 D0 [; Q% b& k: g; a- b
GPIOBank8Pin12PinMuxSetup();. y. T+ F: K+ j: |
GPIOBank8Pin14PinMuxSetup();
0 R, h# N. V9 n& q4 u GPIOBank8Pin15PinMuxSetup();
# F2 b! @+ A. w
! W/ Y) \( U3 U) j GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
" G8 Y; S) C: ~) Z1 ^( E$ P& \* Q% M GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);9 p3 t; w$ Y' o0 { N' e
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);* K4 j) F% U I" T4 N2 H( U
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
4 g6 T V! }' K( I0 y9 P* w& \1 V GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);/ @; Z$ D. X. M4 I6 \2 r
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
0 S/ [0 U$ _3 m. b# N% n GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);! g. t% l* D" s: U. s0 m; L& J
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);* w; Q& h9 P* Y! k2 E7 k7 D
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
" r/ u0 i& I) Q# ?. n. a/ l
: W9 D: d4 b" m7 c# W, B" o. J
5 h$ {6 H, Z! c7 b- ]3 Z% U // 底板按键中断. G# Y: ^( l6 a
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
5 _( n7 c2 z5 i GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none( ^, d9 i* n! E7 Q% W7 `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left/ c: ^; {9 X) H; V' B
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
. Q& K- g4 I5 G: V0 z/ X GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
0 J% s& ]4 _/ _* e( J3 N GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right( L) n, {1 d+ ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
1 s: k1 v; {6 E. R GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel. l% R8 l* G: x3 d' A( s
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
: D/ Y$ U: D" a7 k5 \! u: d0 v; y; @$ w
// 使能 GPIO BANK 中断
& Q4 r- j! m! O GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
8 x9 M0 x( g o; g GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6! F) v. x7 Y% \ A0 C( U
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO87 G. p; Z+ k# c' ?. g6 X
; ~3 b. d$ j, E, M! q // 注册中断服务函数' S" p0 \+ ~; q7 S: }6 i$ `9 B
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
' N2 r; G$ \5 R. T+ ]& z IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
3 [' M5 D+ [ ?+ w& h IntEnable(C674X_MASK_INT6);2 P0 ~& F: L8 F
3 V3 _/ r( L: T5 M IntRegister(C674X_MASK_INT7, USER1KEYIsr);
0 [" i* I! W0 l6 s+ ]2 `% x IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);! ~8 O; S0 A& K
IntEnable(C674X_MASK_INT7);
# M$ x. m# V: t- Y+ z2 o Q
0 l! b& Q4 k: F. S7 ~ IntRegister(C674X_MASK_INT8, USER2KEYIsr);
. b7 C2 @/ o' D, O- w IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);( M- b! r3 a( c* ?5 B6 p- D2 O( N
IntEnable(C674X_MASK_INT8);0 _6 m" h( o0 I: P* w3 ]; x
但是现在收不到中断,请问问题出在那里?谢谢# Z1 |* j1 k3 @% i. p& p) f
|
|