|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:2 k% u1 \+ Y, H* d2 M
//kEY GPIO set1 T2 T; f. ~- H- v+ n |$ F0 D5 U
GPIOBank0Pin1PinMuxSetup();
/ O7 Z4 e8 h& \! p5 D. A8 E GPIOBank0Pin2PinMuxSetup();* f1 x8 C* ?+ l! n# ~/ x
GPIOBank6Pin8PinMuxSetup();& F( v- k% r- G6 q' Q2 s
GPIOBank6Pin9PinMuxSetup();
4 ]* {' Q1 w+ q' j- F' C$ \. p5 Q GPIOBank6Pin10PinMuxSetup();+ R/ W2 A! X5 T ]5 R9 ?: j
GPIOBank6Pin11PinMuxSetup();
) @" H: A* z9 w2 G9 t" g) ^) M GPIOBank8Pin12PinMuxSetup();
1 n" f1 B: {/ l$ c+ ]3 s GPIOBank8Pin14PinMuxSetup();
% R5 t" V- j0 g$ T GPIOBank8Pin15PinMuxSetup(); J9 P- }+ J5 J/ j3 Q u
( Z+ J* D8 N* e6 g6 u1 ] GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
$ a& h& \# F) [! ], s( `. h GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);' y( u7 w4 P V0 |+ z2 u
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
+ z- C6 { R5 ~1 z7 C GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);5 ^, h! {4 S4 z8 P0 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);7 g ^# G1 V! I% W$ {0 B- p, w0 @# ~/ e
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);' q; d" ?) t0 d* ~
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);! `$ _5 }; Y: A/ W- ]" R
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
j& Q5 }* ]% x6 E GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
6 W) S [# u4 ] x7 ]/ j. B' d) b4 ^$ y5 i- [* A
2 g' X. T7 u4 |7 Q* U- K' w9 B // 底板按键中断, g' \0 `/ d& t! ?( Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
) w4 K- w4 I2 L U GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none7 a+ Q' ]* G, u4 f
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
) p. J/ l0 V8 a5 `8 b- v GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok0 ]4 d! R- y6 D! w
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
* W6 |7 G, L3 M/ U GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right6 F% p) q" n' S8 Y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
; W9 d8 f! L; p2 R0 ?0 a# h5 O2 G" o GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
$ G. h% N9 K3 F GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
& r. _0 W" o F
# b, m$ K" U3 T8 w# e4 M8 k // 使能 GPIO BANK 中断
7 R7 `) w8 N9 g, [9 e GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
( S X. v( u0 p2 Z GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
! |% F* @' X. ? GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO87 x; @6 v9 F7 E
! X' s! Z& p( {6 U+ [" U // 注册中断服务函数: i# _3 o7 _" V* n1 e; S0 x
IntRegister(C674X_MASK_INT6, USER0KEYIsr);* l7 l+ \% F0 G5 J& \ q4 r+ {
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);; F3 V4 ]5 W) L) ~
IntEnable(C674X_MASK_INT6);
7 d' d9 p, g9 Q/ m% Z% S* i/ \6 f
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
- V! d. i2 j, _6 ^7 u, B IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
& C- }: J# M- A+ e. G IntEnable(C674X_MASK_INT7);! w4 R& j5 H8 [
" f5 T- ~' k7 S5 r$ f: X IntRegister(C674X_MASK_INT8, USER2KEYIsr);4 H4 a2 |" ^9 Z% D. M- T4 t6 v+ |
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);0 z- v% l" V" c, P# \( h
IntEnable(C674X_MASK_INT8);
. G- L% y% c; }+ }: n* p但是现在收不到中断,请问问题出在那里?谢谢3 v8 c( v# Z; V# W4 |. s
|
|