|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
& n& P' A. z- V" G //kEY GPIO set# ~( S6 C* Z" q
GPIOBank0Pin1PinMuxSetup();! i: x9 v0 c1 a: x. {4 g/ U
GPIOBank0Pin2PinMuxSetup();% Y9 @& \3 U, \7 G
GPIOBank6Pin8PinMuxSetup();; W: D. H! J' d/ W7 A8 M6 U
GPIOBank6Pin9PinMuxSetup();7 M5 X( ?* d2 S; g# c6 C
GPIOBank6Pin10PinMuxSetup();' A* N* U8 ?- Z9 z2 s }1 u5 R
GPIOBank6Pin11PinMuxSetup();; g+ K; y3 ^' c. {' Y1 `
GPIOBank8Pin12PinMuxSetup();# ?% r( v; Z6 r
GPIOBank8Pin14PinMuxSetup();" o& D, t" M9 w! a& e* k; `
GPIOBank8Pin15PinMuxSetup();' S: _+ T* T. _" J I& s
9 V) m6 H- l4 ?7 K0 ~. Q! G GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
8 H; B3 ]: L+ N+ x% V u# S GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);- b, m" G9 e5 F: B( \; \
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);. S0 Y" B) D! F! R4 E! X% V8 \7 P
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);( U+ b3 P3 h# f2 h$ e! I& r
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);4 r, H/ @2 L0 V! B4 ^& C
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
8 T& [- ^& X. w& {4 S GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
! }! b1 H7 h, v/ p GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
& F6 _. J$ x4 ]) p# L GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);. A' D; m3 w8 w
# u M( y) h8 x/ G) S. m& t
" y) s. U" T0 N, d6 E5 t1 y // 底板按键中断
6 g6 g# [" H( P GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none5 J/ E, [ h" f6 I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none! \' L' f0 `& _. V( e5 b5 u
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left2 U2 [) t, n+ B( g) s2 D* d# ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
# G8 ]* c* ~9 S& G- g GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
3 Q; L4 R6 z: v1 v( h: s, N GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
( g- ]) J; r+ M# b: z3 F) I: O GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
: Z2 x( A: O1 h2 `& l" N+ D/ } GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel( Y, x y& v0 O; O8 @4 c/ M
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm9 j z2 U0 G' W4 \# g
2 H& x$ R( T' F% k
// 使能 GPIO BANK 中断
* s/ R% L$ ?, @( P9 N1 ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
+ f, ^/ Y* A8 ~& D8 C GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6/ w+ i; z. X1 C- ?
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8. h6 W: G. R/ p# Y
; P5 T/ B: w+ r" w- S0 P- |9 [0 |
// 注册中断服务函数* E; L; s3 D6 R; G$ p
IntRegister(C674X_MASK_INT6, USER0KEYIsr);8 Q3 j" ~+ B; O) u# i
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
2 A# ~$ R8 B0 s$ u IntEnable(C674X_MASK_INT6);
9 u$ h, X; d: m( ^" G( g7 @
% T- U4 \" }6 ~# J IntRegister(C674X_MASK_INT7, USER1KEYIsr);( _$ ]/ j8 I4 F {6 r5 Y
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
: l; b; q( g. ]3 f0 S! \ Z3 f IntEnable(C674X_MASK_INT7);* c- G9 e e/ H8 u6 R! I& C+ b) V& }
; J% [! `5 f- s+ e- n. d9 }% J4 |9 y
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
& A2 q1 w$ Y4 Q IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
$ A) @, o: q# K IntEnable(C674X_MASK_INT8);
$ e3 a; w3 l; j* x% {, n9 H但是现在收不到中断,请问问题出在那里?谢谢
# V) ^9 a( y- G O |
|