|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
/ P! z& B- C# H, @2 t& { //kEY GPIO set' I+ U, w/ {: B2 Q! e2 {1 {
GPIOBank0Pin1PinMuxSetup();
+ c1 K0 H/ I% r0 M GPIOBank0Pin2PinMuxSetup();3 m$ Y1 y( A: a. O
GPIOBank6Pin8PinMuxSetup();4 j+ x3 J/ b. `3 ^2 U6 S# o& _
GPIOBank6Pin9PinMuxSetup();
* V% c" L8 E: ~6 R% U7 F* r# t GPIOBank6Pin10PinMuxSetup();& l7 o |3 V9 u8 x5 x- P! u
GPIOBank6Pin11PinMuxSetup();
/ M' ]" D7 q9 a# _3 u; w+ X GPIOBank8Pin12PinMuxSetup();
+ m/ r G' n/ z0 h GPIOBank8Pin14PinMuxSetup();
" Y) i/ E* {" N7 w0 A GPIOBank8Pin15PinMuxSetup();
) p+ \5 E' L' L- {1 R# `" \, E1 \: \, t* ^) c) [4 g
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
7 Z P/ I$ Z' ~. t# K- l z8 P. B$ z" | GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
9 `" I- k$ I8 }- P9 G GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
5 l/ T, F; c* v5 q: ] GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
+ Y' K0 u, z, _9 t GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
$ d9 L5 h1 Z0 h, i9 o4 H5 O GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
. v# j9 h# t6 X1 R2 ? GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);* C) W) H3 `: U% Y% u
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
. V( u; E5 J5 ^4 u! ? GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);1 h3 W7 m! J6 j! b
+ ?- r- O; t( S. |1 B; O- u! B# a. k: d- ~$ y1 Z
// 底板按键中断
9 c. R% ?+ R! i; Y: f GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
4 x, D3 F9 C$ p$ ?; z GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none* P, \* N! M0 e# D- H9 X T
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left; S' W, u' v+ C* d; H. f
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
# Y) F- o2 `+ z1 d3 S2 r; q GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
2 d- }& t9 d- Y9 W; J0 o' W GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
8 Q3 q* g" R& H GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
c6 t1 A: D( R* S$ ~ GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel/ T3 V& b: _" ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm2 f. S. l$ G# ~! {
4 z; O5 y" c* ? j9 u$ U
// 使能 GPIO BANK 中断# S$ l/ `9 F8 J# R+ o. x
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0& |9 Y) u# c/ m1 i9 J
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
6 ]) j3 f6 @/ t/ Y9 k& S GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
" ]. x" U4 L! F1 i+ V7 M f: G0 y! i8 |0 s
// 注册中断服务函数
/ o4 L4 I/ |5 q# F, ? IntRegister(C674X_MASK_INT6, USER0KEYIsr);
" [: q0 Z2 z- i6 S IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
& X9 C) B2 g2 t0 n; | IntEnable(C674X_MASK_INT6);9 B+ O" A0 ]4 K( D6 K; f( ~# @
3 }# u; y! @( [) _: p! j
IntRegister(C674X_MASK_INT7, USER1KEYIsr);: ]6 @+ `. f$ u# q' }: s+ I. E$ s
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
+ ]7 b/ ~$ L8 N. K- R IntEnable(C674X_MASK_INT7);
" N7 E( Z3 J1 A1 U
. S1 F0 v( x8 H1 e- d IntRegister(C674X_MASK_INT8, USER2KEYIsr);$ B. h7 ~! ^3 r7 h5 @- ]; h0 T
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
) U& Q4 B, o) B" K: K IntEnable(C674X_MASK_INT8);: ^* {- ?+ @) `6 D1 ~; J
但是现在收不到中断,请问问题出在那里?谢谢
2 X+ v, W1 G" E* Y( ?9 A: X |
|