|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
+ T+ ~2 V6 j% y+ c" u6 G& F7 T //kEY GPIO set
/ d, n2 k2 F( O$ p GPIOBank0Pin1PinMuxSetup();& ~, q$ Z1 a6 l$ Q: N0 w: t; W6 q" R7 o$ x
GPIOBank0Pin2PinMuxSetup();
% T" J# j# u/ G+ B4 y GPIOBank6Pin8PinMuxSetup();
5 \. ^- w' \; M5 ` GPIOBank6Pin9PinMuxSetup();- [( g& P6 v' ]5 y4 K( s9 |+ T
GPIOBank6Pin10PinMuxSetup();
9 R F7 s6 L/ o9 x1 o GPIOBank6Pin11PinMuxSetup();
% T0 M0 [$ O* `' p5 w+ u GPIOBank8Pin12PinMuxSetup();) A$ m) Y8 r2 e. D2 A
GPIOBank8Pin14PinMuxSetup();7 r- |2 m9 a' c/ R
GPIOBank8Pin15PinMuxSetup();
4 z( j x1 ]& k1 {3 g9 F
" L r$ R9 [* B+ V GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);8 }( N7 N/ F) d7 D
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);0 Q/ T5 l4 R [
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
% P. \- i. P- ?( a/ S/ L- f GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
& {! D$ w8 U. S+ _' {* d, e GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);# g `8 H, l0 K! g) V) R
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);9 R# a, ]& c1 q z' z
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);1 U+ c# K4 V: [- n3 K
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);: U/ p! C- i& u, |
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
9 x, ~6 B& x+ }2 B
! x; ]. x, R0 J
$ N- q2 \( z ]$ x: ?& M/ i# M5 { // 底板按键中断: l% H; T0 }! w* _( }, n% N/ m* p
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
( A! J& i6 {" I4 j8 r+ p. Y- N( s7 _ GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none5 R! \# z9 e. V$ `- L P* ]+ G
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left3 [5 B1 F) h; \- w3 J$ ]: e
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
D* {6 `3 Y+ }" v6 o( Q, q O0 \ GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
! [) |8 \7 i. d: u8 Y5 o GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right% w5 d9 P' ^' X
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
3 Z' c' |/ m6 t$ p4 ] GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel5 P- q9 j# d! ]/ q6 f2 |$ `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm: `0 Q& B' X9 Q/ T
/ i/ f6 f) W% R' e
// 使能 GPIO BANK 中断
6 a. t0 T& Z. I; C' z+ O6 Y GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
8 }& d6 I; u& ~: U5 R& c+ m GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
/ ]. F/ g3 M: |5 r9 A6 t E GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8) n' l5 ~* @+ j. m4 m
0 D" H: U' X" C0 y0 ~
// 注册中断服务函数
: S- ]4 d% u# O9 B$ c1 N IntRegister(C674X_MASK_INT6, USER0KEYIsr);) H* }' v v/ L0 U1 w
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
2 b9 u& A4 u3 ]' K/ a# Z IntEnable(C674X_MASK_INT6);' b3 Z) O! K5 K' D
1 m6 \! U3 D4 y& L) {7 {) p9 J IntRegister(C674X_MASK_INT7, USER1KEYIsr);
" k, C3 |7 C4 d: ]2 g: O IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
; y: M9 m+ M2 y2 z9 X3 O" J IntEnable(C674X_MASK_INT7);! a) O! A, V9 ^. e
" f# ^* i3 \ c+ f- o3 U% l; K6 L5 s
IntRegister(C674X_MASK_INT8, USER2KEYIsr);2 l; ?+ I1 X0 K
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);% a/ w! c( f5 O* E! ]
IntEnable(C674X_MASK_INT8);( C. k" p2 \& M, E- D& `$ e
但是现在收不到中断,请问问题出在那里?谢谢, D) o- h, a, _+ G* g! d
|
|