|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
7 g& W- f5 c6 M! A' | e" f //kEY GPIO set( c1 K3 J. W) y) ]+ H2 Z
GPIOBank0Pin1PinMuxSetup();
' W1 k8 J9 h, X, d GPIOBank0Pin2PinMuxSetup();
! F' `7 Q5 B7 t9 I6 ~5 Z3 v( G4 o GPIOBank6Pin8PinMuxSetup();
6 J8 X: \" o% k GPIOBank6Pin9PinMuxSetup();
) m1 ]0 ?0 }6 A) g- Z GPIOBank6Pin10PinMuxSetup();3 \" A, q' R. L1 I' h/ a
GPIOBank6Pin11PinMuxSetup();( B& K5 R& M- Z) W
GPIOBank8Pin12PinMuxSetup();" u: B/ S$ ~1 k5 Z; G! B; O
GPIOBank8Pin14PinMuxSetup();$ A" q, V4 ?9 w" G _ c! V3 V
GPIOBank8Pin15PinMuxSetup();* m7 n# }. a% ]
: _* D+ ]( p# O; f- |& A
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
) |& `; u% `6 j Q7 U GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);! f, v9 K5 V. g* S9 q
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
9 m% I; d$ N( ]6 u9 D0 B& w/ g' N GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 n3 f+ D4 |( }6 j* ?
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
8 @9 }# Y+ k% N8 u" ~" G GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
, @5 W+ s7 L( J( v" m GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);# E3 R3 e5 e/ E. @' y1 l
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);" N4 S0 g; X& C3 o _
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);! b8 j0 F" J7 O. }
) {7 s5 B8 y* c! z6 O5 {
) V$ h3 {$ B# Z+ S9 J // 底板按键中断
5 ~/ `7 d: T: y! Z+ f/ { GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
; | I. ] ^* s' { GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none0 ~ k0 j# ^# {+ m; Z" B5 e
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left7 i6 [. r2 W! n( w; |& ^3 O
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
, C( b) d6 b! M4 p: x; c GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down, j8 s9 i8 I0 @: A( ]
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
: V/ e T% d: z- Q4 Y& |+ m% P GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up: N( _6 K+ b9 v
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel3 c) s2 U% G, P% r: Z) b- T% |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
3 h" \9 M, t' P' x! W
- K' R8 Q6 m! l6 G! S7 s // 使能 GPIO BANK 中断' y4 \# n) l2 w. ^) P2 ]
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0- b" E' M) x' V( I/ z
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
5 u8 a/ B! Q' K GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO84 A4 R: z ~9 c1 h. |) e5 {, J
8 [$ g1 S: X$ K: g; h# |2 n+ i
// 注册中断服务函数
. h, j5 ^# ^: R3 C( T IntRegister(C674X_MASK_INT6, USER0KEYIsr);( ?+ G1 r" h1 E7 v3 ]# Z1 B6 u
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: [# L9 \% ]) ?3 K8 m( M. D IntEnable(C674X_MASK_INT6);
) P5 y% B3 v$ D% v) }! S; ?" X3 T& V
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
' A/ ^1 s, _8 { IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);$ P% E3 R4 K4 g8 R7 e* }# u
IntEnable(C674X_MASK_INT7);6 c$ \* x$ t* a" K) {7 @
. p& o- h5 T) R3 R* P7 E IntRegister(C674X_MASK_INT8, USER2KEYIsr);
* [+ t9 s& I1 r1 w IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);- w- S! Q4 q0 u ?+ A, [9 g
IntEnable(C674X_MASK_INT8);0 j5 q* Z) Y& V# k% y! G m/ T
但是现在收不到中断,请问问题出在那里?谢谢 k, x& }) |8 n0 ^9 Z
|
|