|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:' t& n) M$ m& `; V; j- O
//kEY GPIO set$ E; `$ n* W/ z
GPIOBank0Pin1PinMuxSetup();) D7 T L3 K7 u5 ]6 {3 f1 x
GPIOBank0Pin2PinMuxSetup();
% |6 V( V. w* C8 F0 \5 W o GPIOBank6Pin8PinMuxSetup();
# h; \% ?& m( A( D) ~4 v6 r: R& a GPIOBank6Pin9PinMuxSetup();) h2 e l4 j, z7 A; W: @9 V
GPIOBank6Pin10PinMuxSetup();$ V8 y+ g1 x5 H1 k( r) z
GPIOBank6Pin11PinMuxSetup();7 t& K% E+ s8 d* n+ n
GPIOBank8Pin12PinMuxSetup();- J$ k% g, q: x7 t$ Q' C
GPIOBank8Pin14PinMuxSetup();
4 f( W' K4 U( E1 O( @& l GPIOBank8Pin15PinMuxSetup();
* ?; L: M* r0 F% `( `
* E5 F+ k% j9 d7 s5 F. S' K GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
. E( w0 M- f( X i/ r GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);0 y( w5 r5 G0 s0 C& C( A% \) T/ u3 r
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);3 `8 Y/ t- ~; q$ V. k7 E
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
" E4 f0 U" S% y GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);) w! e2 F, l. c5 V( @/ R
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
- @. D |4 X. W* b4 q! X) P GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);; S9 B- L3 F( n6 }1 h: d) C& u
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);1 W* Q6 Z1 X* ], M
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
% u- G' E: S, u5 f6 w6 d" H( R5 a& w
6 ?6 L- t. y2 v: Q9 A9 Q/ e" g6 u // 底板按键中断
3 |5 _' I* w- Y GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
v2 w0 j9 A2 w% i. V GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
1 B: L# g- @* y. T2 v/ X' g) j& J GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
) a3 ]: A( w9 \ GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok' c3 e, h3 a5 @# u I8 U4 N
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
5 m0 C% Y0 C( ]# k GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right; b: s0 v1 u; f6 ~0 f; K
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
2 c4 Z: |3 H" ^" G4 B GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel: i2 K7 l! t6 l* y$ `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
- O; @2 W7 Q2 H5 G; b
3 A' d8 ^' c' S9 T" A h // 使能 GPIO BANK 中断
$ H; @2 d5 F+ }9 N/ G0 A0 e9 ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0 ?/ A; G6 l: L; m/ q+ m
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6 D$ T8 g2 I7 @" Y" J0 M0 _
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
+ p# B4 [) Z. V6 g% w; I
/ y9 t6 M. w: s( b // 注册中断服务函数
. p) t) v4 {. V IntRegister(C674X_MASK_INT6, USER0KEYIsr);
) V4 }& R- Y1 b# j- z+ m8 F IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: k* m2 m( |. A2 Z. c# p8 ~/ C IntEnable(C674X_MASK_INT6);1 N! D6 Q& {* X; b3 p$ r
6 S7 @' L+ W- x0 n4 U* Y! V) P8 ^
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
% ^, h& K9 _9 ] IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);; ~) |6 G+ {# c& ]$ x* ~! g5 x
IntEnable(C674X_MASK_INT7);1 n2 W! b L& R
+ Z( r2 Z8 }' h IntRegister(C674X_MASK_INT8, USER2KEYIsr);! ^% j5 z1 j$ X, a& k* U9 ` F
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
! @1 v+ g- D1 s IntEnable(C674X_MASK_INT8);
5 ?8 `5 i: m. ?7 M4 o8 A但是现在收不到中断,请问问题出在那里?谢谢" P* @3 H$ O+ L6 N
|
|