|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:' C% y8 p' G7 z( g
//kEY GPIO set
( H9 n! Z" l x GPIOBank0Pin1PinMuxSetup();! i# l L4 L( k- ^) l
GPIOBank0Pin2PinMuxSetup();% Q. p7 ]% x* A. m: g$ ?/ n2 }
GPIOBank6Pin8PinMuxSetup();7 Y @* h! x& g6 h2 Q6 n
GPIOBank6Pin9PinMuxSetup();
1 v' {) p6 R4 k GPIOBank6Pin10PinMuxSetup();
* ?% F( E/ G4 }! A) k+ T# O GPIOBank6Pin11PinMuxSetup();+ p( B7 y9 O$ H1 C: c& J, s
GPIOBank8Pin12PinMuxSetup();
' a+ q2 l+ ?( A- n% `" w GPIOBank8Pin14PinMuxSetup();
% Z( B t: Y7 g' p2 T GPIOBank8Pin15PinMuxSetup();
! r3 B: `/ z, t6 D7 d H; a1 c8 D1 O Q6 S
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
4 `( \: |$ f9 ]) @, v4 f/ g GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);# s+ ~: U" E9 t0 d" S
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);2 i' ^4 d/ o3 x T2 }9 _) D
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);4 n6 Y3 z. ]0 \4 O
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);+ H- r% u2 v: v2 q( e; e
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);6 S) t! X' r- P% H( W
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);9 f3 q: |: Z8 H' k( H
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);( N4 B5 q' I' y, M0 u" ^) S
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);' o& e1 F7 y6 G5 n1 U3 | I
4 y; u: g: [" i8 Y) v7 l1 o! K. b" J1 |& y9 L9 Q7 N6 p4 K0 ^
// 底板按键中断- S; ~8 U. Z/ q' j+ v {! L
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
7 q* r; F8 p3 d0 \ GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none5 Z6 G- ^: ]6 D0 h/ {* E
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left: Y/ Z6 M5 U" ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok9 v5 v! P0 w. @2 o
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down& C% a1 A3 G+ h9 n9 O8 F
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
3 W. |. @% h3 \0 n" e# l0 C GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up, Z: a. s3 t; R O3 \
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
x4 I6 ~3 I& n) v+ c. H GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm( I0 o2 S' ~" m) d3 |6 J- j% h
( Z; \- f3 B1 `; Y+ \ // 使能 GPIO BANK 中断
3 n2 t2 e* M! @1 |2 r3 } GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
3 l0 r8 ^& u) k/ j GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6; @6 y, Y, o+ F2 K8 C3 ?! @: k
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
: P, U% I" ~( I! v( v* a$ e6 a; a
9 G1 y9 O3 j2 W* I6 u& X. x // 注册中断服务函数
! J+ A% U& D6 s( s. ?: B. G IntRegister(C674X_MASK_INT6, USER0KEYIsr);
+ O7 V8 K- V3 ~+ x5 G+ [ IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);8 f4 K- H; y5 }/ w& c# p
IntEnable(C674X_MASK_INT6);- _5 K- @- E3 [ q2 g5 b" ]
* `* j9 f; X+ }( v6 X" Z
IntRegister(C674X_MASK_INT7, USER1KEYIsr);! i- F2 x# b1 u0 Q1 M5 s2 v, D
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);' y( s1 h# w6 w/ ~7 o/ A! g& N# D
IntEnable(C674X_MASK_INT7);
2 g# n' v$ x9 G+ B
% k. g P( c0 V* Z, Z IntRegister(C674X_MASK_INT8, USER2KEYIsr);
" l, S( z( P4 q3 C IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);- g7 g& |& L; ]% R
IntEnable(C674X_MASK_INT8);
* R$ I. |( u* |4 C8 w但是现在收不到中断,请问问题出在那里?谢谢( `; Z7 C- a# d' J9 x6 X
|
|