|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
/ R+ |! m6 ]6 g3 M6 x% R3 p //kEY GPIO set1 ?6 ~9 X' U$ B; _4 x7 N3 G5 L: r- `; M
GPIOBank0Pin1PinMuxSetup();
( P6 a8 x+ \; n/ U' h! y GPIOBank0Pin2PinMuxSetup();1 Q m/ W, q) r+ A" ?5 w% d
GPIOBank6Pin8PinMuxSetup();& h* B( E* K. @; K) u( i& p
GPIOBank6Pin9PinMuxSetup();
# e+ l, l, p) ` GPIOBank6Pin10PinMuxSetup();6 X4 n+ v' S9 M
GPIOBank6Pin11PinMuxSetup();
- X( g0 q5 j5 ^. J, F GPIOBank8Pin12PinMuxSetup();3 W% m! z4 v$ A2 j
GPIOBank8Pin14PinMuxSetup();
5 c8 i* o, s! B' w4 P! k GPIOBank8Pin15PinMuxSetup();
, t" M3 }5 N" x3 \3 _ S) U
0 [, Q1 J4 @6 B7 E* ` GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
* q" P' }, F: F+ f! F' Q7 l GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
; I7 _+ x' j3 Q GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
. j$ _+ M2 o! [& Y U r/ f GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
$ x9 Q1 ]! u9 J. \" F+ C GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
& x3 J/ l# o/ _& d GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
: F& c) p/ I0 b: I5 e GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
+ s+ N. {' d! r0 a/ _7 M GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);! V# y `9 J H& B
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);* |! A4 W+ A5 s% q( ?
+ e( u' y5 V( J3 S+ ]8 K; M$ _8 S
7 J' |- l& \' I; a
// 底板按键中断
8 Y! r3 e6 f8 J4 k GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none; e, J7 R9 \ g# g( N& ?: M
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none. I. A2 \: V0 W# W
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left2 j' z: V" R3 G# P0 b, C! Y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
5 G. F2 `/ m( V2 j& b GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
9 E b0 U2 F+ O8 k* q+ A- J GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right. e, K$ s7 R2 c' N0 P' M+ k! k
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
) h* a' e# C/ N4 Z: [5 s( J& K$ Q GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel! K0 j1 x, Y8 u
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
' B+ @6 ]2 f3 e0 j+ c8 [6 u3 d B1 i& _/ d5 e" N- |
// 使能 GPIO BANK 中断. ?: r$ s& Q6 r. t" p) {) g
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
6 v& U9 ^4 l; g7 P8 d" _3 J GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
5 R. N4 [* y1 n/ \/ M GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO81 H( x- N& ~% _! _& \
' w- n0 i! K( C* A
// 注册中断服务函数, o z5 J/ [3 M+ W
IntRegister(C674X_MASK_INT6, USER0KEYIsr);- H0 |- _% x- o: P
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);/ Q" V! o t0 B! B1 W4 A/ X
IntEnable(C674X_MASK_INT6);
% Z# V- Z+ A- P6 s! R! t
# `0 m3 o! D$ B+ ?) w IntRegister(C674X_MASK_INT7, USER1KEYIsr);' U$ i6 {' ]9 }
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
' K6 f' `$ o, t C+ p1 S IntEnable(C674X_MASK_INT7); \- x! |8 q. e5 F" \
* T7 K' J4 s, j W0 m) K IntRegister(C674X_MASK_INT8, USER2KEYIsr);
9 B2 D0 Y I6 w3 {: T IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);, x! Q4 J. V, N% k
IntEnable(C674X_MASK_INT8);
3 ^+ N' m% i5 {; G5 s8 `( P$ H% O但是现在收不到中断,请问问题出在那里?谢谢
3 T: j9 n2 @6 z0 F3 d. }7 C |
|