|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
' I5 R5 j& i: Q! u' V _' _# w% h; i //kEY GPIO set& W8 N; \) d, d
GPIOBank0Pin1PinMuxSetup();
}; [, Q6 \5 b GPIOBank0Pin2PinMuxSetup();2 G" z. N) Q; \9 d/ R
GPIOBank6Pin8PinMuxSetup();, y6 r+ [9 j5 m) l2 e/ I
GPIOBank6Pin9PinMuxSetup();% H) {1 \9 V& V( _5 ~9 ~
GPIOBank6Pin10PinMuxSetup();
7 k3 {/ S0 Z) G: ?9 \ GPIOBank6Pin11PinMuxSetup();
0 @* v: x8 Z" v( e8 z/ F4 t GPIOBank8Pin12PinMuxSetup();# [9 o) r8 E/ ]5 L8 D2 B
GPIOBank8Pin14PinMuxSetup();
+ Z6 p2 {$ R* l$ g7 Z GPIOBank8Pin15PinMuxSetup();8 y: f f- U( p* ], ^; j8 M0 C
0 k. n' T7 A2 [0 G' n& z: H
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
2 o; D" _; t! e \% Q GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);, u& q( h4 o1 `, T, {6 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);% _* O$ a. r2 F
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
( W- _6 T. p" d8 V, P! S' w& O8 A+ g' m GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
( v5 I$ O" x( B3 @, w/ W GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);, l% X1 m% p, F
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);5 J& d' d9 i- ], y$ J8 F
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);4 w! n+ _: E& G0 g# U V9 I$ S7 ?. y
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);$ a) N9 y. G/ I& S9 l
+ f/ L$ W" E# h: ?3 Z4 P( @1 u7 f% O. h: q& o9 q) p' N
// 底板按键中断9 c7 W; q/ {& y3 z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none: d2 F4 z- m- G1 O0 O+ Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
. }( ?. L6 b! d! ] r: k GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
9 V, k0 b5 \8 v% N% c6 i GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok( k- Y2 P9 ?& A2 t
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
& @ R: M5 ?- f% O! Y9 M8 l GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
) D+ h! G# d' R$ D3 l. @/ ~ GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up$ d0 x- r" `" }6 ^ V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel9 Z, r1 L5 K4 O$ _- p
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm% E% A! D& o* N* O; f
, ? X+ \* M& \' ]5 w6 f3 H* ^
// 使能 GPIO BANK 中断
$ x+ R# |8 X1 T: V) z* Z; X6 ? GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
5 @" ?5 y2 l( T* ]+ q7 b GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO60 E; M ?. `: Q
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8& K2 t2 W1 L% F7 s' J
) O* [! z P3 y5 L // 注册中断服务函数
, P( g3 \6 V. W, v& g0 j IntRegister(C674X_MASK_INT6, USER0KEYIsr);0 \: n2 Z+ P) M2 C& ?) Q
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
- a: W5 _4 _- Z IntEnable(C674X_MASK_INT6); I4 r$ K5 Z8 Q) h3 G2 A
7 Y' U) p, m. W- F! ? IntRegister(C674X_MASK_INT7, USER1KEYIsr);* }) e1 C8 R# |, a/ h* }; @
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);% N0 A/ K: N& J9 r- N% ^
IntEnable(C674X_MASK_INT7);
; h x' ^, P9 H/ ~
8 \ @! M9 f7 Z: A: V( ? IntRegister(C674X_MASK_INT8, USER2KEYIsr);" i6 C6 {4 o8 r- `; N# n
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);4 S% @$ E. k: T
IntEnable(C674X_MASK_INT8);+ S& x; }; `$ N
但是现在收不到中断,请问问题出在那里?谢谢
$ I7 q/ n$ q; Q( F) j! u |
|