|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
. t- I% Z; [ e$ _6 F //kEY GPIO set
# `7 ?4 @3 @0 c* y4 L GPIOBank0Pin1PinMuxSetup();/ N9 b' {. R7 Q" `% o
GPIOBank0Pin2PinMuxSetup();
6 N, g. K! [! F. f1 g* ~" b# p8 R GPIOBank6Pin8PinMuxSetup();
4 H3 G+ y" z3 G1 ^ GPIOBank6Pin9PinMuxSetup();( U0 }; }6 z4 W; b
GPIOBank6Pin10PinMuxSetup();
8 d: N. S9 G, `/ B GPIOBank6Pin11PinMuxSetup();7 J$ w. B0 R3 j4 ?+ B* h
GPIOBank8Pin12PinMuxSetup();
" e. Y% }* S# i. v; S, \% o1 X" Y+ n GPIOBank8Pin14PinMuxSetup();
( `; Q o: L! i Q# O( T4 ]. ? GPIOBank8Pin15PinMuxSetup();+ A( r& N( \: ~, f; R3 ?
, h4 J' Q) q* G4 E+ \# V GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
: u6 x9 B# @2 K4 U; X) {% D9 B GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
4 \ [. r; e: F7 {1 v" |- n GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);& ~5 b5 v% E f! z; c. { T
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);8 z; _3 G9 c- k! T3 V( ?, D
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
/ W3 F* U2 r/ V: ?% \. k) [ GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
9 E @; ]- O3 V GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT); ^, {* y% T4 g( m* A& ~- `5 q
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);$ }- y' `1 ~, {8 d6 N% p
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);5 {3 g; @( g& n
( x5 h6 j f3 u& G2 Z0 ~& w: G7 `8 s
& g2 Y1 ~9 |8 g( W // 底板按键中断
! M0 Z5 a# n+ \) n- r" F5 i GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none/ L2 P! v- b2 Z! i0 m
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
1 S- u5 I. O. C8 a M8 e GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left; @0 `* Q4 x2 ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
' U, d( D8 V1 F5 \, L GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
( K: E% b5 A9 W0 r" [+ ]% H GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right& M& U4 k1 ?4 O, u2 Q# }$ O
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up: }4 Z, L6 E i: N9 w5 x7 D
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
# _0 o3 E0 G+ }4 U `$ A GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm+ a' D8 D7 X3 D) u
2 V, A4 X( t- u# ~8 I r // 使能 GPIO BANK 中断, f2 y. e' V9 g$ Z
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO00 A3 p0 ], F3 _1 I& P- I
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
6 p+ f8 [, R) H2 V! n2 y z2 {2 x# V GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
- u, ?5 X |& j0 [! I6 i, l7 @* K) M* ?* r/ y
// 注册中断服务函数" _( f# M6 M T" k: n; g/ ?( K
IntRegister(C674X_MASK_INT6, USER0KEYIsr);. H+ [/ g4 d4 f
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);7 D' v- x9 \, q' u
IntEnable(C674X_MASK_INT6);
1 L$ t# }! q/ D8 ` b: ]$ k0 B- t% ]4 d1 [) k3 _# h1 ^
IntRegister(C674X_MASK_INT7, USER1KEYIsr);+ y& v. h$ m# ~- }$ V9 z
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
4 I8 ?( \8 p) Q IntEnable(C674X_MASK_INT7);) D) m: Y+ l( |* O4 e7 k, ]1 n5 l
5 C/ w# [7 v' h. K IntRegister(C674X_MASK_INT8, USER2KEYIsr);
+ P! \! T* a3 d IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
% x2 @5 P) }7 x IntEnable(C674X_MASK_INT8);
# q/ p! r. ^% g* K. z但是现在收不到中断,请问问题出在那里?谢谢
( x/ j" U* i* f t1 J+ k7 F9 o |
|