|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:* h0 I% {' c- i) } |% R5 U
//kEY GPIO set, x. C* o* Z/ a) ?" p! k9 ~) \
GPIOBank0Pin1PinMuxSetup();
# ]% E4 a3 e0 O$ U GPIOBank0Pin2PinMuxSetup();
8 D0 h" u0 G) n0 ]! z GPIOBank6Pin8PinMuxSetup();) V& p' P2 z% a" s" Q
GPIOBank6Pin9PinMuxSetup();
7 m4 [* N$ b+ ]$ }4 {5 G/ o& s* x GPIOBank6Pin10PinMuxSetup();: S/ H7 L: M+ D% |5 A9 J1 d( U* U
GPIOBank6Pin11PinMuxSetup();9 }0 M5 K5 l+ r% \/ [% j* p |- M
GPIOBank8Pin12PinMuxSetup();% T6 X* I5 A3 L
GPIOBank8Pin14PinMuxSetup();
: J/ M$ F/ Y0 @ GPIOBank8Pin15PinMuxSetup();& ^, t- U1 h. k' M1 L/ ]( ?
8 P: p/ Q3 `6 y7 {+ Y+ M
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
$ W) e+ s: X6 Z# x% _3 b GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
+ S8 f9 @* b3 u4 O# U {% j, T/ L( l5 o GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
$ J# L5 X0 |5 C GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 I0 R9 N0 F6 F( b5 ]& V
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);; H: V: U2 R4 k! `% b
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
2 s( `; x; m( U8 Y8 e. c7 [ GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);1 D ]% y5 D: C
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
4 x$ }8 [7 o0 e' T/ @" i GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);: @, p2 |0 |/ u
# T4 C: D1 ~: U0 l( V. b* Q( z% k& x4 G4 R6 k" b/ Q2 `$ }5 }
// 底板按键中断
0 e& H% _$ N( h$ M. P GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
: ]3 s. l# @/ i9 P/ W( D GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
& n! w0 Y2 a# N GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left- [" O- T. @- A7 s" l" w! T6 o
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
# L8 F1 X( J3 m: a4 C% J GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down3 k1 z0 R* P8 _ [
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right( P! s V1 G5 m# z6 h, O i
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
% |9 _' ~8 v0 f% h- m0 o GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel$ C/ `0 @8 H* p G7 @8 K, e; a9 d, o
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
5 J' C: ]: ^/ _3 p) V+ p
! G7 T% a) ]/ P, o& U( U // 使能 GPIO BANK 中断% e' I @4 S5 l* l1 q1 k8 ^. D2 }
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
: d/ h- H5 o' u! a: ^ GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
6 i7 z3 S; j0 Q9 C GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8( {6 G2 g# o" y- ^$ t9 z/ K
8 }. c/ L* M* L9 V6 O: o0 G: ]
// 注册中断服务函数' U" d8 o2 t$ Q% M3 {% u
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
6 k/ G: |* W, P2 d IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
% L4 m* t% D$ }9 S/ E' v IntEnable(C674X_MASK_INT6);
! ]$ q9 B( t+ b$ e
# x% j& X* c- G* ^( N4 |+ S IntRegister(C674X_MASK_INT7, USER1KEYIsr);
2 I+ o# z# g' z IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
7 q; R# b) A1 r1 Y- u' X& G IntEnable(C674X_MASK_INT7);" H1 ?* w) y d3 T D( |
8 `( f; W V/ Q! e5 y8 c9 L
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
4 F* r1 ]- i* M2 t3 b+ g* q IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);; w1 Y' a. Q* z5 L$ ]0 |
IntEnable(C674X_MASK_INT8);
, k m4 Y8 o* M& P/ `1 |; |' z但是现在收不到中断,请问问题出在那里?谢谢+ ]4 {/ g' d6 [3 ^! g
|
|