|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
) n8 d2 j! t [: m% r9 u0 w //kEY GPIO set
\0 A4 V+ E# D+ T* i- ? GPIOBank0Pin1PinMuxSetup();* Q5 L/ T7 g$ a7 r/ V7 }. m; c
GPIOBank0Pin2PinMuxSetup();
5 @. E! n2 h; M5 T; @, b GPIOBank6Pin8PinMuxSetup();4 x/ w9 Y+ Z' q: o
GPIOBank6Pin9PinMuxSetup();! f2 I5 j& V% ]6 v3 M/ b, O, t$ M
GPIOBank6Pin10PinMuxSetup();
! d& E3 ~6 g' o0 \) g GPIOBank6Pin11PinMuxSetup();) Q! l/ R" s5 M. e; O, l. n
GPIOBank8Pin12PinMuxSetup();& l5 t: }- V, w7 M! z
GPIOBank8Pin14PinMuxSetup();6 \" |: Z$ {8 ?% h& P" A( ~4 Y3 _
GPIOBank8Pin15PinMuxSetup();
0 i) H' _! [. v
9 X: A1 N6 l& c GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);% M+ d0 Y" Q: _1 G. |
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);5 J1 |2 Y% Z1 I" h
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
) {/ j0 H0 a) D GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
: |1 L d% O0 h) { GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
: x6 ]$ ]; S8 Y) E( _ GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);* ^* ~" k. E/ V D6 T5 [: r% z- L
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);; P: j( Y: T% ]" s& Q7 |
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
* n, P i7 ?+ _& {, u. { GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
: K: F4 u" n( I: Y1 o
# q! x+ I L' e; k; M( B! Q7 L" o) g4 |
// 底板按键中断
4 \9 v1 u4 R6 f; H3 l GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
, N3 J G2 \, l5 a GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none; y5 m. @5 [, I8 n
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left. o( a! T+ W" s% D: `8 D- }( Q
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok& h4 p* J# _& {. g) u/ M( }, v+ S
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down4 p8 G6 z* l: b4 O& O+ d" f
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
0 K! W, O0 I$ h( d GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
0 |8 a# G4 a( j0 K2 D GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
: Y4 J* c7 d% r! x GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
. b) X# F) K0 w7 ^. {
. d, e1 y7 }9 I- u // 使能 GPIO BANK 中断5 j, { ^0 P f: p4 b
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO05 C' F! H* c! R6 Y+ ], w0 k
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO65 f# d+ j6 |8 h& _# T/ R
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8$ m( J& K/ \+ W
- a* y$ {! \+ ~# S! @ L% ] // 注册中断服务函数
! Y l7 p6 Y* [! |- B5 ^ IntRegister(C674X_MASK_INT6, USER0KEYIsr);& q) ?4 |% J2 U. X' `$ r% }
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);7 O- u3 v3 ]1 q7 g+ T, v
IntEnable(C674X_MASK_INT6);
8 V! ]& q: L$ _% t0 g6 Z% G( z4 J. l$ i; n9 T' w4 w
IntRegister(C674X_MASK_INT7, USER1KEYIsr);" S( m7 O1 R! C, f! m0 y4 a: g9 C& g
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
: z! V( }% D1 c N/ U4 G& l IntEnable(C674X_MASK_INT7);+ t% W9 O# q' [" Q# ~9 F
+ ?& q: _, U; @; L! A; I& U
IntRegister(C674X_MASK_INT8, USER2KEYIsr);8 A0 W5 \$ x& e; H$ s& _ R
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
, U: I/ `5 t7 K0 x/ K. Q IntEnable(C674X_MASK_INT8);
4 c5 T- R4 X4 q t9 E但是现在收不到中断,请问问题出在那里?谢谢2 Q7 K2 R8 y6 V. h5 ~
|
|