|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
( A7 ^& A+ H7 ~ //kEY GPIO set; K' c3 \$ w% J# S/ B" x& w
GPIOBank0Pin1PinMuxSetup();/ D) Y% Q" T; ]( P# r( I; i' C0 n* [
GPIOBank0Pin2PinMuxSetup();
# ~6 o1 W! r' s) F! R3 R GPIOBank6Pin8PinMuxSetup();6 |8 o" O8 e4 X8 i
GPIOBank6Pin9PinMuxSetup();
3 b' k4 o3 p6 v, G. R+ S, p GPIOBank6Pin10PinMuxSetup();
! b8 J$ _- j: D- o& N GPIOBank6Pin11PinMuxSetup();
& X" e7 R/ W' J& L GPIOBank8Pin12PinMuxSetup();
, L K" |) ~# R3 D6 N2 | GPIOBank8Pin14PinMuxSetup();% W" `0 ~, z. e! E" I" [- B" }. Q
GPIOBank8Pin15PinMuxSetup();
5 s( a* [( \# c' `* L; S6 ~3 Q( l; ?3 ^8 L; ]
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
* |3 }, j. _! s# j W e GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
. S1 N# M, R9 k1 \" e GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT); {/ c: P, A) m3 p# M, ]1 k
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
( v" R: n2 [4 K% A5 n GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
% ^) ]' U2 m3 b: o! [! ^: |/ E6 f; G GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
# ]! W8 K! z% k+ R GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);$ Z" }, `7 ]) b% U
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
! |% h4 W0 r( |- l GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);% k& f& b' r" A
) c. A2 i+ B( k, V$ |9 c
3 n" p. J7 t8 L
// 底板按键中断
5 M2 R/ y/ T# \& j6 [ GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
: h: R" O( S9 l i GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none: X1 m5 e& {5 B; V9 |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left6 l( s4 w5 _4 g; h. J9 P
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok) s- H" O) J7 C8 l& j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
: }/ z( H# F0 C6 Y! T GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
- }& i- J0 t% x8 ] GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up9 h& }2 V( g% I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
: k6 ?; f" |" @3 O' F! c$ E) u GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm7 d8 K7 {% Q$ B& m9 Z
5 f+ x% P& S5 X1 I( |) E8 X; v // 使能 GPIO BANK 中断* s1 X6 `* b: |7 K$ G" W
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
8 G1 O- h$ V/ z9 [7 ^2 J: S5 w GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
! ?! u' a! p* \0 [2 @ v; g GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8" r; j1 q9 [0 m& `: S2 Q2 Z+ T
4 |, [ Q5 z# J- [8 {) L
// 注册中断服务函数/ q2 \' r2 c$ w9 _* i$ b7 Y
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
3 M u% y% a8 w* q4 k5 q IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
, k% S4 f: `0 L& B3 `- _ IntEnable(C674X_MASK_INT6);
0 U: C' Q7 @0 g: F4 S
5 K- g7 o+ \ I D IntRegister(C674X_MASK_INT7, USER1KEYIsr);
, N* J8 R. C& q5 y7 y5 ~$ `# Z8 y IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);7 h: e1 g0 J: Y7 z
IntEnable(C674X_MASK_INT7);
+ O0 I; T, q" c. P2 _% ^' K& M, o) l% e
IntRegister(C674X_MASK_INT8, USER2KEYIsr);7 I2 M% e* q( C* p1 _& Y& m. Z
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);7 K, p# Y: S5 Q! d* s: N
IntEnable(C674X_MASK_INT8);
5 O) ?; S$ e9 A5 a但是现在收不到中断,请问问题出在那里?谢谢
8 P; ~/ b3 a( i N- h3 s9 A |
|