|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
) K% P: s6 K/ l# R) M+ C% z, E //kEY GPIO set* {0 D1 ]8 t# a: T. {% j. E
GPIOBank0Pin1PinMuxSetup();5 Y) W4 H& l) X* O% Z6 d! G' I
GPIOBank0Pin2PinMuxSetup();+ n6 x! l. p* t6 \ s& D8 K3 J4 j
GPIOBank6Pin8PinMuxSetup();3 c& B6 t: R" c% b3 b
GPIOBank6Pin9PinMuxSetup();
& K: A8 i3 N" b GPIOBank6Pin10PinMuxSetup();
0 }1 f! V$ D# U$ s3 D GPIOBank6Pin11PinMuxSetup();
/ {- I+ M9 h/ ] GPIOBank8Pin12PinMuxSetup();
" k% p* L. v! f2 i) v7 A7 U GPIOBank8Pin14PinMuxSetup();$ w h6 `& C" N
GPIOBank8Pin15PinMuxSetup();
/ {. M& o+ _3 _6 O6 f# [
5 z$ m: H0 n% k/ B GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);0 G/ I/ ^9 [2 [+ b# q
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
8 f x6 |. |/ j. s# g GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);. V# ]& j. v7 z1 \
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);% u7 K a8 q( d
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
" K* X, `; p/ p: x GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
/ k R6 `5 G% b, i GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);' P0 s* m( Q3 h$ c+ ~% E3 v
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT); s) j0 x! {7 s) O6 j2 f
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);& g5 S, c i& R' v- d
# n) N o; K5 \
& l1 ^7 d5 P! c // 底板按键中断
/ z$ ?/ d$ `# r- c5 |' R GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none' r& Q* |6 s; n1 P- P7 z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none2 X' z8 m- r! D; M5 C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
. r! h* m4 y! F1 C4 f9 { GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
4 I; \0 P3 `. S' N GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
' @5 l% `: `8 Y% c GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right- N7 G* b M) I8 g' R |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up, s. q' C$ P& W6 s3 B9 }
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel9 w9 o" V6 v x& J1 P! F0 g
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
& A( l/ x( X) q) B9 z2 O: }* t% F: Q! \* m' d( v, n) q6 }# ~5 u
// 使能 GPIO BANK 中断
7 ]- u, G. J' g. d( b% J GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
, Q2 X5 C( q2 l! V GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6- H. V( c3 F9 ~0 W) `4 ^
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
9 V# O2 @ [6 }5 D
H% y# S" {5 S* q- o5 c // 注册中断服务函数3 j+ Z h( R0 g: t6 I4 y: C2 b) b( y8 p' b
IntRegister(C674X_MASK_INT6, USER0KEYIsr);9 ]3 v b7 l! P' w! Y5 ]
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
4 _- y: ^4 n+ z IntEnable(C674X_MASK_INT6);/ A# e5 S% P) v) ]' }3 S6 d6 `; X/ U
- u1 y- M: C2 V; @! f$ o7 D
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
* Q& s S/ ?. U3 S IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);' v) ~) z1 o( \2 A
IntEnable(C674X_MASK_INT7);- C/ n0 _8 [3 k0 K( W0 W( u
' I3 f, n& O) o! s' K* j
IntRegister(C674X_MASK_INT8, USER2KEYIsr);/ S4 w1 _9 n6 l( d7 [
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);* W: s2 D- l; y, K( K, c9 F2 z) a) E
IntEnable(C674X_MASK_INT8);5 l8 F* g3 s, q' Y. A
但是现在收不到中断,请问问题出在那里?谢谢
- G8 W# x# A9 u5 z3 p |
|