|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:; W) n2 h$ e: X/ F7 T
//kEY GPIO set
; I! V4 e0 m' l0 e1 n GPIOBank0Pin1PinMuxSetup();& u8 u! H8 U! i9 B; ] i6 k- Q
GPIOBank0Pin2PinMuxSetup();
& p0 O# E# t. t3 [: ?5 M2 m GPIOBank6Pin8PinMuxSetup();
- A3 o) Y% `* v GPIOBank6Pin9PinMuxSetup();. L7 B: G" n& {5 N
GPIOBank6Pin10PinMuxSetup();
8 f* {5 [. W. t k GPIOBank6Pin11PinMuxSetup(); i4 i- w$ e# D" }; Q# I
GPIOBank8Pin12PinMuxSetup();% M0 ?. `4 B( C. I/ s
GPIOBank8Pin14PinMuxSetup();( B V g4 ~0 G7 X
GPIOBank8Pin15PinMuxSetup();
, K. \/ I) y0 i$ ?# b) v `5 ]! }
$ _9 m* c/ \+ H GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
1 K4 l+ e- L; J GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);6 U( i1 V& ^/ q1 P3 g5 h
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
; \6 l; k, T( M6 o GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
: K# M1 T8 P: l, ^. r7 s8 r, N2 g/ p7 p GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
" _/ ^3 o; `- \+ V# ` GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
0 I% o0 x6 E: s0 E: g GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
9 n' k1 b; r% ]9 s GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
7 u# I) j& _) X. p" |* Y8 ~$ } GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);4 F. G( t5 m' C; @7 A% h
5 c# w7 } o1 M9 n1 {. N" L9 b
6 K* P# R5 h+ {+ k* A
// 底板按键中断+ d; f/ [4 e1 }( A
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
5 T2 E0 M' L& Q- n$ x, I; q! Z1 G) O GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
/ o: Q/ a- I! @2 j& c; ~ GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
9 a; y' i7 T+ w GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok2 J; o6 m6 r. z N) w& Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down" }; L3 u( b" z) V& H4 q
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
& @& ?: h& a W; z. X5 b GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up0 J: _3 L: U0 y( \) e
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
5 x+ w4 e3 k% J! k1 K% _, t GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm: `0 v) ?! s. T9 ^, ^( K. r
3 A# ]- T' q9 r4 u. y
// 使能 GPIO BANK 中断
1 [, S5 \8 }& d GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
, k% z$ e" h0 N9 }! u% Z8 j GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
) j" W6 @+ j% ] GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
1 Z) b* q/ c5 B/ [! u9 C6 R' V+ U& G" c8 i
// 注册中断服务函数5 h5 k/ _0 j( n5 Z2 m3 w+ @
IntRegister(C674X_MASK_INT6, USER0KEYIsr);; k7 I C8 y" s8 Q. u5 ?' ^7 e8 |4 U
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
9 Q/ H, P2 L: k2 Y4 t% a& d IntEnable(C674X_MASK_INT6);
% L3 T) B/ y4 o& R* M
4 E; x' p# _4 R5 J+ C' S IntRegister(C674X_MASK_INT7, USER1KEYIsr);
p$ |- R# B: I$ e IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);( V" n# m' t3 f, \- l
IntEnable(C674X_MASK_INT7);& Q$ F" j1 Y2 q! B! T; o
) }! W5 \2 D$ i( H* l; O8 H
IntRegister(C674X_MASK_INT8, USER2KEYIsr);/ I( u- P* N$ ?4 I. u& q! L
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);. b( \8 {; I7 |! ?1 k8 V
IntEnable(C674X_MASK_INT8);, e- w! ^2 I; V0 i; P& ]
但是现在收不到中断,请问问题出在那里?谢谢" L" o1 h/ K4 X" }5 n S* _$ z7 I
|
|