|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
6 v% l9 B7 I& `4 ]7 c //kEY GPIO set! ~8 E$ t6 Z( B; d8 D1 H/ C1 X
GPIOBank0Pin1PinMuxSetup();! I; V" F/ Q- n1 \ U; B
GPIOBank0Pin2PinMuxSetup();8 l0 n( a+ f' P" e* Q2 e$ B
GPIOBank6Pin8PinMuxSetup();
" c9 a4 m- S* f& K# O5 _9 Q GPIOBank6Pin9PinMuxSetup();
, m) Z- b) G) S0 H! s GPIOBank6Pin10PinMuxSetup();! }5 J+ F. f! p2 X; }, ?! K7 K
GPIOBank6Pin11PinMuxSetup();
# W5 F2 K( y4 X) \, D2 G/ ^& l GPIOBank8Pin12PinMuxSetup();9 ?! G( B. i1 m4 P/ N
GPIOBank8Pin14PinMuxSetup();
8 b( R- i" i* r GPIOBank8Pin15PinMuxSetup();
# U) t) k# }6 t; U; ?$ U! M' G! H' f( {1 X
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
; L# Q' ~8 n* h GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);, D) f' ^+ S/ P8 @: I
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
m3 s) w3 `6 F$ Z3 m GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
1 i3 V4 J2 {7 O5 i* y; s GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);* A0 C; r, ?' ^- c' K. W
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
( k1 p& z& [+ k# A0 f1 } | GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
; G N: [; D* P GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT); E0 G" L% I$ n$ o
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);5 Z7 T8 h; @' L2 {) G% j
* |9 K. [( j4 N8 l
/ z0 E, c ]% o // 底板按键中断
0 c: o8 x, Q, } GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
1 u P, x! ^6 \# U2 S. M GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
3 E+ ], ~( d3 ]& I8 s( ^) z GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left7 I; I, O4 j6 h- }7 h( o6 s4 \0 r
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
' d/ a; b# t7 ?+ U0 Z GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down3 X# h1 [3 i& `- B+ O
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
- o' D4 q# G4 T. _+ D GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up% O5 z2 B0 L$ z8 i: D9 j: o/ {- _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel) S9 k2 m6 M+ _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
% x* C( H3 m4 N1 S* D8 v
3 W- d5 w5 i* u! l$ l% ? // 使能 GPIO BANK 中断% e. M* r l0 S" Z7 {1 T2 h0 J
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
; K; Y# Q: n# {$ s$ A1 y2 { GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6' W& L2 J0 F4 F# [, u
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8; e4 {1 I; X8 N( [* A2 Y ~0 P( e
1 a$ W @9 T: d4 O4 Z
// 注册中断服务函数 F" l' r0 \# C+ \
IntRegister(C674X_MASK_INT6, USER0KEYIsr); E& q: g- E5 ~& W+ z1 p
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);8 @8 }3 U0 G1 g' R7 k6 |
IntEnable(C674X_MASK_INT6);
( F# f; V2 z' }- e. @; D! l }" i) }7 } V, A7 Y; H0 \
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
f) m/ |! x- L IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
1 T5 t( _9 {% U9 s IntEnable(C674X_MASK_INT7);5 h( i! r8 o7 n; k
# V/ y. |/ f: p+ u) y; p IntRegister(C674X_MASK_INT8, USER2KEYIsr);6 q, s; Z- F/ Q) A. `1 F. ^
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
7 h6 @; }1 R ? O9 Y- A' n' B7 R7 u8 l IntEnable(C674X_MASK_INT8);
4 J) P1 ^+ _! o4 j但是现在收不到中断,请问问题出在那里?谢谢
2 m( S' K* n( `( D. y+ I1 a |
|