|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:3 g Q- [' O: t7 p
//kEY GPIO set
7 Z& E% l* I$ q( v+ f& H! J GPIOBank0Pin1PinMuxSetup();0 J) x: L! x. r/ A8 W
GPIOBank0Pin2PinMuxSetup();
* U& y- b# m/ @; G u. W; N6 @ GPIOBank6Pin8PinMuxSetup();
/ c9 T8 l7 N& t GPIOBank6Pin9PinMuxSetup();4 \+ {+ t; R6 o' D( F. i) z% ]
GPIOBank6Pin10PinMuxSetup();
/ ?) K+ ]3 H# ^' { GPIOBank6Pin11PinMuxSetup();; R$ h. ?" M) p. p1 l" n
GPIOBank8Pin12PinMuxSetup();+ u w4 O% R/ Y7 X% j
GPIOBank8Pin14PinMuxSetup();
9 {; [% h4 X- y& C' A m& ]5 M4 E GPIOBank8Pin15PinMuxSetup();4 s& X. I7 Q: G8 U B+ I+ ]
7 E, ]0 t0 M0 n9 a
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);3 d- w' x! k$ c; }
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
% [& h; Z# T2 T! z& T" o GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);. S5 y4 }" V0 V# }+ H. }
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
( W2 k2 c) X% @$ h: | GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
7 K; z; Z& Q0 L% | GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
# a$ q# G: G! W' I A6 w GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
% |9 k& Q2 z# ?% M7 l+ y GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);2 [- R2 u; O4 O0 f& Y3 P9 V
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
( k; {1 d |% p7 {- N
2 x) Z9 j; y6 ~$ f" x
% }1 ?8 k9 K% y" v" a' e- X // 底板按键中断
P: `2 s% W! r8 V$ m) k2 }2 _# P% w GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
6 q* h! @! {+ a3 b GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
7 E- p, \! @' x GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left3 c* X$ Q8 b! t+ n
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
; h( s+ f2 g' Q# R# O# q; `2 } GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down1 X2 U) @" }1 P4 C. i
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
0 m0 R4 C$ O4 L& T$ U2 E" M GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
2 W) A0 M4 ~+ y4 s& Q# P( G0 X GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel/ ~4 C" F- @8 q% ?6 z# ?1 L
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm. Y+ e i8 f+ q f7 W+ k) U$ I
4 T/ E! B* H8 @9 {) L5 T
// 使能 GPIO BANK 中断
2 W: V5 m. D n6 m! ? GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
5 }, F* N4 T; U! ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6 K I* G) {8 n6 Z5 [
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
' x& {* w' E* w3 P0 @% ]* D/ z4 L2 s' H$ e+ z7 F
// 注册中断服务函数
H: K5 y5 Z I( Y, o( t4 B# ] IntRegister(C674X_MASK_INT6, USER0KEYIsr);
# Z* U- \ v" n% I IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
2 m H; B8 z& z) {+ k5 u IntEnable(C674X_MASK_INT6);
% I$ U0 ]( o5 H w ^: a0 y, x3 i) m0 z. c2 }
IntRegister(C674X_MASK_INT7, USER1KEYIsr);7 w& t6 w& s! M& o' Z) [2 }; Z1 |
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
9 x& q3 U0 V) J5 Y7 j1 T IntEnable(C674X_MASK_INT7);4 `" F$ g8 W2 m) l* A
% [7 D" l' R- F3 i4 X) J IntRegister(C674X_MASK_INT8, USER2KEYIsr);" w; o' Q0 A$ m, M. i
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
5 B" y4 W, R! u7 E" q% u F IntEnable(C674X_MASK_INT8);; g, O8 ?9 {& D6 v2 _1 }1 W# Z
但是现在收不到中断,请问问题出在那里?谢谢+ i: V( V# E7 [
|
|