|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:2 i! R7 r, X$ z8 A; @7 d3 x
//kEY GPIO set
- H# T% N* M/ n! C1 a' w) P3 o* w GPIOBank0Pin1PinMuxSetup();4 \( H" G# m8 }, I/ u
GPIOBank0Pin2PinMuxSetup();4 C; J6 O" L( ]$ O
GPIOBank6Pin8PinMuxSetup();
4 d) o0 \2 _ n) p GPIOBank6Pin9PinMuxSetup();
. Y* o* R. _5 Y- c, p GPIOBank6Pin10PinMuxSetup();, G' o6 O" U: x) M. W
GPIOBank6Pin11PinMuxSetup();
h) b" O* `, k& w& h( | GPIOBank8Pin12PinMuxSetup();; _# D y) X6 o" L* }& P' t
GPIOBank8Pin14PinMuxSetup();% N# C# g. x2 j7 L
GPIOBank8Pin15PinMuxSetup();
" V# j+ }4 N" |( h9 b
8 V: V4 }& r4 V' [0 j9 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);& f/ R* h6 Y1 i8 M' D$ c
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT); r( L( @. C9 U4 l; G3 A# V
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT); X0 \. B5 @% c
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);3 b6 H, p. \1 k* h
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
% y4 ?3 J T7 i6 h GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
8 W. f' e& T% r) p6 M7 k1 Y( W GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT); Q" k- n3 K2 U9 ~: G% M8 p$ i$ c
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
! g0 d+ U$ }0 n. ^6 ?3 R E GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
, S# c3 `" l5 F: C
. ~0 i3 y- r: @. E, u$ R& o3 u* T6 i1 ^4 N) P
// 底板按键中断/ S: _# C, Q; G" Q# w7 j8 E7 c
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
/ l) z: ?- ~8 x* P; X! a1 {4 `/ V GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none8 J) b; v: _' C6 B1 N) H
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left/ V2 y9 m" ]0 q4 f4 @4 e. h
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok1 M6 z6 q9 G5 f' B% u. e3 C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down2 I; [9 Z5 ~- W8 m0 W8 B" I
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
0 N) @. l3 G0 c9 z2 |6 @" l GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up X3 }/ L( O* a$ H2 h/ h
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel& X1 ^, g& _% [8 u/ m
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
) a% f; T5 w# ^* z$ o
7 `8 ^5 ? B- J2 E! d // 使能 GPIO BANK 中断
; M4 t L; H- T4 I& j6 }4 v1 d' E GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
2 H6 ]4 `; V' I/ s0 A& [5 h GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO62 F$ _; K7 M" Y5 F" `
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
* T9 |# y* B8 v1 M4 w3 Q/ F5 E! Q% ^0 R2 y- A1 p
// 注册中断服务函数
& o: ?0 m& p/ K IntRegister(C674X_MASK_INT6, USER0KEYIsr);' w, H. |8 |" Y- I# H3 \. t3 h
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
, _' E& d/ U2 {' V* m) e& O IntEnable(C674X_MASK_INT6);8 D+ y0 R% R) V# ]
7 h( d( ]& P3 K
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
5 A/ V- f n ]. a/ F IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT); E$ S" ~9 @: [1 s2 U! b* h) W
IntEnable(C674X_MASK_INT7);
" z1 g* ~1 d( J$ c
1 }) P- O5 w4 u5 I0 K4 J IntRegister(C674X_MASK_INT8, USER2KEYIsr);6 S' P3 }9 h l( U
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);" z, Q: `9 Y4 J- i9 E
IntEnable(C674X_MASK_INT8);
; o; R* \. @% |0 {4 u2 c但是现在收不到中断,请问问题出在那里?谢谢$ [% y3 `" j% I) w2 O
|
|