|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
$ [4 \/ Y' B" U, ?! @ //kEY GPIO set
3 a! A5 j! l6 g; I$ g GPIOBank0Pin1PinMuxSetup();2 i0 M5 }. T+ S
GPIOBank0Pin2PinMuxSetup();" t7 ]3 e. C3 q+ y a- u- d/ O; ~- Y
GPIOBank6Pin8PinMuxSetup();
d' Z4 ^- G: o: e$ C, H l% [* j GPIOBank6Pin9PinMuxSetup();
& h2 n( J) M/ H" o% m- t GPIOBank6Pin10PinMuxSetup();2 a8 S$ u& z M) j h. _
GPIOBank6Pin11PinMuxSetup();
/ l8 R, r2 U, [& B, T. @) C# i% L GPIOBank8Pin12PinMuxSetup();
, u# o6 C$ F) F GPIOBank8Pin14PinMuxSetup();4 L5 f- e# O ?$ \
GPIOBank8Pin15PinMuxSetup();, t. t; H' x E& Z/ a8 B7 o% G
, M" g3 h& R; ?0 { U; E GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
6 k9 w J4 L* H9 u GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);9 n' s" Q) K$ ?
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);, X- N4 a/ V9 s9 G z; b0 R7 t4 U
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
/ S0 v* b* E3 q GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
6 D4 `9 g/ k3 Y/ b- T% Y1 n! V GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);$ z" z2 B. g$ C
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);6 N4 p3 k$ E* v+ w+ N$ |
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
# M4 D% M. j& k4 w GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);; X. Q" f$ O" x9 P& S
# X7 X) l( y, w9 X' W/ }& v- W5 X" j* m% U; E
// 底板按键中断% t7 _$ t+ [9 B6 e$ z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
' M" V H! h% x) K GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
" n+ Y; l# `" m4 ?# E/ f% j# P GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left0 ^3 K8 q, z9 j. K
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok3 X% A/ {/ y; t0 g7 _0 W
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down8 m7 {* W, J- B7 G f2 o, N, C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right0 j5 f+ E* J4 h) E- G2 x! N( x
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
% _: s1 Y3 A' p1 G4 U5 p7 { GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel- a/ F4 t) s1 P: W$ J8 t/ B
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm' P0 e. [9 ^' t3 @6 N' @
9 w- W3 e2 S p
// 使能 GPIO BANK 中断5 m: ?) z" I) p- G9 s5 O$ g
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO01 m3 n; G; J0 D1 X- A+ U$ E6 M
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
0 }* }; y( Y! u: z- b! M$ f GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
5 q' p) e* H( a, O& N+ Q+ S2 n' ?
' y- e; K& `0 G- d // 注册中断服务函数
( @( v. J% K6 U. w# u IntRegister(C674X_MASK_INT6, USER0KEYIsr);, i! M( b5 S8 m) \! D0 V
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
d. c# h' G* d4 U% K7 a IntEnable(C674X_MASK_INT6);0 t0 W, \# W4 Z1 G
4 e3 L/ a( o! |, r; r6 P IntRegister(C674X_MASK_INT7, USER1KEYIsr);9 k3 y% ~8 V, g0 I4 W
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);) V% g& X, z/ Y6 |7 s" I, O, J
IntEnable(C674X_MASK_INT7);. q2 `; j+ H1 h& A6 _
" r, P( i% y' u& m8 t
IntRegister(C674X_MASK_INT8, USER2KEYIsr);/ U! d1 O: C- U9 r, X( m
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT); X3 R& l; N/ Y! n0 y- C
IntEnable(C674X_MASK_INT8);
3 F& Q( M% x+ a3 G% r但是现在收不到中断,请问问题出在那里?谢谢
, o! C2 s+ q* g |
|