|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:" t A2 O* Z- t! I# d! S9 a
//kEY GPIO set! {) \' ^8 v6 P
GPIOBank0Pin1PinMuxSetup();5 m$ x F' {/ v4 v2 w- `# U7 H
GPIOBank0Pin2PinMuxSetup();
" s1 t( J: D* h7 a GPIOBank6Pin8PinMuxSetup();2 q- e a* @" Z: M: O/ M6 R
GPIOBank6Pin9PinMuxSetup();0 L# } d5 I$ U1 d
GPIOBank6Pin10PinMuxSetup();
+ Z. s: ?. D* [ GPIOBank6Pin11PinMuxSetup();2 z( b: P0 b- ~5 T/ |. G
GPIOBank8Pin12PinMuxSetup();
0 \8 B6 a. B3 W+ R GPIOBank8Pin14PinMuxSetup();
* Z6 h. _/ |: _# u GPIOBank8Pin15PinMuxSetup();
' z7 S( E7 O) C5 {2 o3 K' V( K! z
( ?! @) _2 c% t* k% e GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
3 |2 a, Z0 Y& E% Z9 J* v. I; c GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
) [- r- ?. f+ ] GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
1 \6 J+ T/ f" _9 W1 U6 @; n GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);; o( E" W. |' B' A3 A
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
" M5 W4 v" z; X/ |* ^$ ^( z GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
: a$ h( d( @! f GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
- s0 @5 C s: w; y GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT); v3 k- W# O2 ?9 v$ S4 Y8 a
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);. |% F7 X$ {3 @
8 k3 l6 f3 t3 [8 L
. u, K7 g1 N1 w. c+ y# p1 W // 底板按键中断
8 Q) u ?' u q1 ~) | N6 M GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
9 P! |2 @( z3 f' R! c, L$ x GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none M2 d3 ?5 ]- `) p+ b/ Y: F
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left( p$ Z2 b# s0 I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok) M" {6 |4 K% c s; @
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
' K; ?9 s6 G7 r3 N! o4 F GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
5 l' v: s0 {( r9 T) `' C+ \ GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
; l W% U+ {6 N9 ?3 C GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
) |. R+ l! X9 y5 p GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
# Q$ J3 g( ?: m& P" k5 d) Q' z: L, I/ C2 R5 L. b+ w% T
// 使能 GPIO BANK 中断8 l9 m4 A8 |' H4 f2 M
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
9 n# K, d7 E; l( i: n GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
+ ^/ q' R* r( g( m, \8 h, c: s- @ GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO83 F; P2 N3 Y: m2 G2 Z
6 |) ^+ O7 P& u. O# G- S5 N, b) T // 注册中断服务函数 B. o8 S; Q |3 [$ i9 T3 H
IntRegister(C674X_MASK_INT6, USER0KEYIsr);: s, }: U; s8 j
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);! S( _* J) W0 k) | o/ S/ K
IntEnable(C674X_MASK_INT6);
! q9 k; R+ a+ x
. T; D7 h0 u- c j' a3 S IntRegister(C674X_MASK_INT7, USER1KEYIsr);
C5 v1 W6 v1 P IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
& ^% |4 R. w9 N IntEnable(C674X_MASK_INT7);
0 n6 O: `: ^) P+ ~) F) m% F! q( l# u5 M; A: L7 R( X( J* N
IntRegister(C674X_MASK_INT8, USER2KEYIsr);+ @$ M7 g( O( u0 B2 f( e
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
- y) _$ V0 s$ @4 j% w IntEnable(C674X_MASK_INT8);
i/ m& W0 z2 n# b2 ^% m9 a$ P但是现在收不到中断,请问问题出在那里?谢谢: ?4 J1 ^* b; Z' ]
|
|