|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:( w4 u$ Q4 Z6 I }
//kEY GPIO set
3 Z+ n' W s9 H: \2 J% Q GPIOBank0Pin1PinMuxSetup();
4 o- |3 ]/ v, h* U `9 o* d; H# ^& {! g GPIOBank0Pin2PinMuxSetup();
+ @3 r+ }% B1 |8 F GPIOBank6Pin8PinMuxSetup();7 O' Q% U2 R7 `) o7 j& b4 V$ U3 i% |
GPIOBank6Pin9PinMuxSetup();+ A9 S# ~5 W$ \& j" C& D% J9 x
GPIOBank6Pin10PinMuxSetup();7 b4 ] V3 r. x4 W: n3 P( ?
GPIOBank6Pin11PinMuxSetup();
$ o0 R7 u, O# @. J" {% d! `: A GPIOBank8Pin12PinMuxSetup();3 X+ l9 b& b4 I$ l1 ~
GPIOBank8Pin14PinMuxSetup();* c% F/ _' i$ D7 @5 g2 s$ n. R# q) `! Q
GPIOBank8Pin15PinMuxSetup();( R' i4 ]: k1 |' t$ S$ J, \
; ~0 [; t6 Y: o4 b
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);' p* B) d8 _ H- c. B$ \7 D
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);% U# D3 S& M/ E) q+ P: R
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
: g0 K3 g; B( L/ g8 W" o D4 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);- ?: G& ^+ M: P& I" U1 i! q
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
- o) z6 t& R4 x+ J2 z GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
/ [- V, H; a# b GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
# M1 I9 ^. c; T$ {# r! S5 \ GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
: v0 T7 Y! g- }* x GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
, H0 H: t X2 G8 J- D5 c
; T+ d$ g/ b/ ^$ z! z+ R% T% ` C
! R( F1 J) ]! G9 H) C' W! F8 n // 底板按键中断8 ]2 `" t( v: Z" f: h+ Q" Y8 S
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none6 _" w' g+ Y( M% v* w
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none5 Q) U: @0 x/ Y; ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
+ J8 I1 ]0 s; o' G GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok3 Y8 {! g5 x8 c+ {: R
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down* T1 B0 B; z. q- K) X# d: z2 h. ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right* ~* Q# U+ U! J9 h. [. |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up2 ~0 G! L6 e+ |' G) j/ G6 c# t
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
" \5 G6 Z S+ @6 f; z* S GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm) b, v7 t/ H# I! l! S
. D7 C6 M& _5 v+ l1 E% [# w1 I
// 使能 GPIO BANK 中断
; G; G. U+ L8 ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
* j% {6 l8 k& n- ?3 O GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6) y6 a+ x* n, l9 d. R
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8* z' L1 t. h' j+ m7 `1 A
2 p) ?' V- ?8 E5 z0 l1 Y3 D
// 注册中断服务函数( a, V4 S, ]. W0 E/ h( Y% H. H
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
: \" `/ r. n/ K) j! J; O IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
4 d; g- n: S; M0 b* }9 q IntEnable(C674X_MASK_INT6);
; y4 |+ A1 p6 i# I, e5 R: d- t4 [
* f7 {/ t* T4 ~8 ~9 @ IntRegister(C674X_MASK_INT7, USER1KEYIsr);% w& l* P2 `0 `! ^& _$ K7 W7 X
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
, e$ G3 E4 F5 Q# n8 \$ C4 T( } IntEnable(C674X_MASK_INT7);
! Y: x: T+ l$ u0 L6 j4 y/ S v( ?$ ^% c4 M( b# U1 n8 ^0 l) D
IntRegister(C674X_MASK_INT8, USER2KEYIsr);3 R" O5 m K+ F: U
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);, d* _) M; Y9 B9 i
IntEnable(C674X_MASK_INT8);
b8 B m) ^" p5 Z但是现在收不到中断,请问问题出在那里?谢谢* J0 Q7 m. x0 m6 i6 K @5 r
|
|