|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:; ], m3 c5 g/ y, g/ Z
//kEY GPIO set3 _4 B5 J- q/ R( d5 P% c
GPIOBank0Pin1PinMuxSetup();# j$ O1 i2 D: j* E2 J
GPIOBank0Pin2PinMuxSetup();# t) k0 n8 R: u% S. V; e
GPIOBank6Pin8PinMuxSetup();
8 {/ e; {) t j$ a GPIOBank6Pin9PinMuxSetup();
. Q5 }2 N# P" d+ k GPIOBank6Pin10PinMuxSetup();. X: e9 s" a) A
GPIOBank6Pin11PinMuxSetup();
8 s$ E6 `' x3 d7 H4 W3 ]2 z GPIOBank8Pin12PinMuxSetup();% K- h! f+ c" z3 [6 T' ?6 B! L* K
GPIOBank8Pin14PinMuxSetup();
( }- X4 r5 ?5 w7 i5 @1 a9 d GPIOBank8Pin15PinMuxSetup();0 G5 G0 f) e' B0 Q% I* {/ G( p
4 Z# ]. X- M$ k6 w# d GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
- {3 M% D# n% o' G GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
* m0 E. i; i, j; _' h4 L8 Y! o3 v8 ` GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);! b% p' n. X, X9 L
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
2 j6 `* p' `$ h' X4 j% J GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
5 T5 O9 X* B- S$ _2 M; |" U GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
, ?, ^7 g) d' D1 t+ | GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);; |2 n6 r" d/ ^2 s
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);1 P! Z% K6 F5 }/ g2 P+ w( o
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);, R. B& l4 K9 i
5 O1 w0 Q5 q/ m Z6 D# D3 q: S P- s' U5 Y0 c8 W6 ^& J
// 底板按键中断& ^9 `1 F# k6 V% e7 m( u6 ^; I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none* n, ]4 s* [* F) g$ K" E! g4 Q) q
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none0 I9 Z9 g4 d/ J( \# j# R
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left$ b+ c2 {4 C' k6 [5 X* d0 F" P; W
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
! [1 H' a: Q5 g3 K& M GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
, n4 b2 S7 C0 ?, a' Z GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
2 ~4 e7 L% ?; _) i% e0 U$ g GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up3 C, K) Z; q0 \9 H" L" w* f' U3 V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel; a/ c: b: c4 V- t+ T- N! Q
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm0 G2 @' {+ Y/ T/ [
& s8 t/ J5 p& F) C5 B( M // 使能 GPIO BANK 中断" }2 R3 v2 h1 [% }
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0 t5 l1 [ X8 h1 g) M8 i6 M
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6# v1 d& j2 ~8 C" S s" F! g& i& p
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
: \9 u, Y- m5 k+ ?* ^
- I: T2 t$ D" H6 S: u // 注册中断服务函数# j) _* K, ?( T" t' `
IntRegister(C674X_MASK_INT6, USER0KEYIsr);* e, @, k( ]5 I( f) i4 K' o4 L
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
9 R6 L2 y9 e' s d4 i IntEnable(C674X_MASK_INT6);
0 T/ W. ?' m# D! P
5 F! i9 Y$ u; { IntRegister(C674X_MASK_INT7, USER1KEYIsr);8 S$ o, K# c% o$ R/ x% k
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);/ H. c2 h. a' ^& ~
IntEnable(C674X_MASK_INT7);
# o% C: E6 b: H/ V7 [! w! y8 p* Y) ^; ~
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
( V& E# e: j5 J' i0 x( L( O9 } IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);1 I( N' W+ c- l
IntEnable(C674X_MASK_INT8);
: ?" e, v/ i( W2 t: K但是现在收不到中断,请问问题出在那里?谢谢1 s( W, q) v+ X% P D7 h
|
|