|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:# q0 H- `; q5 ]' X# b- a
//kEY GPIO set4 Q1 |/ \- E+ L& K7 f# O
GPIOBank0Pin1PinMuxSetup();( r l# q* P/ \6 K! e. H
GPIOBank0Pin2PinMuxSetup();) F2 p( t7 U. `$ Z
GPIOBank6Pin8PinMuxSetup();
& x3 z1 U2 w9 q; m6 ? GPIOBank6Pin9PinMuxSetup();
$ P+ R Z5 m8 C GPIOBank6Pin10PinMuxSetup();
9 p$ Y! B2 v" A5 U8 _ F GPIOBank6Pin11PinMuxSetup();' l" ^+ ]7 }# d9 B- C6 E
GPIOBank8Pin12PinMuxSetup();: t B4 C6 x5 w& l% F) H
GPIOBank8Pin14PinMuxSetup();$ s8 R& ?* }" `4 L; Q! g
GPIOBank8Pin15PinMuxSetup();
; s' F: D1 r1 i) T% H0 @/ Y- U, O2 {
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);6 A, ?" d x6 E% I+ X9 L) k+ p: B
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);/ U! l# m2 r' X2 L9 d {- Q
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);' k2 R8 d, ^& ^! b7 a2 b
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);( n) R# \/ X, P: ?4 U2 X$ x/ o
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
/ G5 h7 T$ z" @1 H+ w, [+ D GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);' _+ ]2 R5 g2 b) E5 v# h8 D7 ^
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
" x& J. k3 t9 a! i! H( F GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);! o- p* U+ e! _- [
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
( S9 f5 Q! F6 D0 L! ?1 s, r& y3 l' j ?. z- |9 d5 `3 M
- j2 l' M6 z, z. U3 i // 底板按键中断! s$ p3 w) Y( C" ~! B% |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
, V! v5 l* o' v. v+ j6 Y GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none& P3 M) ?6 g1 |: i0 q0 j4 R" t
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
; @% a. S& k, {6 z3 p* U GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok- f5 Q) C* ]+ I' o+ ~
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
7 O9 ]- E9 r/ H6 ~ GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
. N( }4 m" U" ^$ a GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
& K) d8 s- w7 T) A GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel" R$ p& H U2 w0 p
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm# ?1 L! |5 ?$ U0 i) V, O
* W% C3 V7 q" W) e G' q2 ~
// 使能 GPIO BANK 中断5 R& J& B8 I+ o& }: D
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0" y9 X0 p0 l) C
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
3 ^1 O; t# V& q- i7 e& f& E GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
/ e( f3 `/ C1 [4 z& m# k, `+ p2 j& X* r" r9 A
// 注册中断服务函数
' \) C0 `( Q# `' C) m IntRegister(C674X_MASK_INT6, USER0KEYIsr);6 m) Q9 I9 P/ a' P
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
( Q" G& G7 s8 |8 k7 m IntEnable(C674X_MASK_INT6);* H) `9 ]* |. C! O9 [
& r/ m: n2 \5 x
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
+ g" ^' k% p2 H* ?6 W IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
2 t# ^, A2 I8 {7 R( H# ? IntEnable(C674X_MASK_INT7);
& _4 }- a3 K6 ?* ?! `! ] N- W5 {
( J9 L( D0 w8 s& O# J. m* V IntRegister(C674X_MASK_INT8, USER2KEYIsr);
& E6 O t: x9 v, i! g# D1 c& _ IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
j# |: D7 E- `$ z& m) o IntEnable(C674X_MASK_INT8);% U% K1 p5 e$ Z4 ]
但是现在收不到中断,请问问题出在那里?谢谢) d$ h9 H( |; V& p8 {3 R8 T Q
|
|