|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:7 |. k6 {6 }7 ?; g# i. Y# M
//kEY GPIO set
+ u* P- o- c, w( T GPIOBank0Pin1PinMuxSetup();) U8 p! W# h z# g& o/ ?4 W
GPIOBank0Pin2PinMuxSetup();* V7 e) D8 a, B% i4 P5 y7 [' R' n
GPIOBank6Pin8PinMuxSetup();
2 m0 N7 P4 t" H% z( c$ ?5 [ GPIOBank6Pin9PinMuxSetup();, ~8 U# z! F0 O9 Y; z: A
GPIOBank6Pin10PinMuxSetup();. d+ }6 ~- x7 d# o
GPIOBank6Pin11PinMuxSetup();% I! E) c; q- i/ k
GPIOBank8Pin12PinMuxSetup();
1 X# _) i* X6 ?6 N! d. N1 I n% m0 \ GPIOBank8Pin14PinMuxSetup();
1 X5 y' u2 w& q$ `% s GPIOBank8Pin15PinMuxSetup();
" D+ g7 x- h% M1 Q2 F s3 k6 {- E6 s/ q2 l& w4 d
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
7 `; R% ~% ? v( J0 }4 M# K GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
/ i; V% w; B+ b9 p9 [. K GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);) j+ o) y1 k6 j* o. G
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);& L+ L% O* p9 P) ?2 D
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
u R+ R) Q: }' b( M, w8 F8 c GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
# k, [# J7 K$ ^& r5 |* u- E" ~8 i GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);; O8 a/ w' f- |9 a6 k
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);; d" w8 a/ p- B- i
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
1 H; R+ J: R7 H3 Y" ]4 T$ m' {4 [* ~' N9 H \; ^
' b8 f' }. Y- D9 H
// 底板按键中断" R1 `6 c) f. _" `5 `8 m4 n. Q
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
9 U1 F( L0 i3 C, \0 G& ~# l# ^ GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none4 X5 }3 Y3 j5 t1 ^, d$ F7 A/ I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left3 ~4 q0 Z; i% O" a! w+ Y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok4 `. c' |0 Z9 n2 X# o+ e1 m5 j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down0 U$ ?- C# ~1 J! m; V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right* m* ?) H- d" z& y- o7 ` V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
. R$ ]& g% R! g! p. Q. g GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
1 e3 N" w; `; P5 p4 u GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
5 r. _4 k; T# V: i! F; t9 ^. c6 G( a' a' `/ I9 q& k3 l
// 使能 GPIO BANK 中断! l' Q. t8 i9 ^
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
# f) k& j3 y4 x# Z% Q GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
4 L; ?1 j# v" l+ ?- B) u GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8) r( V# r' R+ k) F5 x
) \$ [: c( `7 m/ e, R, u // 注册中断服务函数9 e% b* z+ P, f9 i' |
IntRegister(C674X_MASK_INT6, USER0KEYIsr); d2 E, S/ y# J, J( T. h P7 g
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
, R% j- b" m- {; g4 [ IntEnable(C674X_MASK_INT6);
( l q/ C+ @0 J
; E! o9 o# l9 O% P) {3 n IntRegister(C674X_MASK_INT7, USER1KEYIsr);6 i1 R' @6 k+ v i8 v
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);# J0 g3 r$ d' O
IntEnable(C674X_MASK_INT7);! H& I" n* A& w, S
* W2 t- M: n9 O: a' q' T; z IntRegister(C674X_MASK_INT8, USER2KEYIsr);
: I' d+ l$ m3 [% c: Q IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
T# K- F: n% V6 r5 r; X IntEnable(C674X_MASK_INT8);, {3 V! a% s, u; N: h0 f2 k% P: G
但是现在收不到中断,请问问题出在那里?谢谢
% w3 A" I: ?, ]* m$ y |
|