|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:. x" T; f$ o6 K/ B7 r
//kEY GPIO set
6 }9 \- ^) `! O3 B( z0 g1 i: q GPIOBank0Pin1PinMuxSetup();
: {, j7 t# }/ B' P9 F7 c7 | GPIOBank0Pin2PinMuxSetup();; K% o$ U G9 S, @ @
GPIOBank6Pin8PinMuxSetup();
, l: @! p* |0 p3 ~6 } GPIOBank6Pin9PinMuxSetup();9 D, J. u3 `6 z o
GPIOBank6Pin10PinMuxSetup();7 T( r3 z" M% n
GPIOBank6Pin11PinMuxSetup();* F5 P: M8 K% Q. Z
GPIOBank8Pin12PinMuxSetup();
6 O$ R/ a5 S7 z& H s1 z! a( D1 b4 T- g3 Y GPIOBank8Pin14PinMuxSetup();
. I. S+ ?) I* S- R3 S6 O1 f GPIOBank8Pin15PinMuxSetup();
4 ?: }& m- h3 ~2 X4 }( ]1 }9 N1 p) n& ]- H' e J" r8 C
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);, g% ~0 @+ ?3 Q( b+ N+ h
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);. O& T0 x3 S& Z+ j
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);7 N4 Z0 f( Z- t3 p
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);! j1 S ^5 ?; _' t$ g( L
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
1 j9 F5 u* f( ~. T' x0 H9 [1 ]8 \* m& M GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 {; c% Q2 A! Y5 o
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
?2 G M0 o. G9 T' W GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
- ~. I7 W/ q$ S1 [. T2 Z GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
+ J. w \4 @* d1 N) a1 P
% i# l0 E( {+ ~2 x$ h" E, Y/ B7 Q% i1 X4 R* N' p0 x
// 底板按键中断
6 I$ n& C* {! q. A" g. U8 } GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
6 m( I" Z: Z& L9 u5 Q GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none6 f( ~5 g( b% b
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
# U- Y+ t) ]$ l$ Q GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok, P8 d, p- c8 B1 Y* r5 Q7 S" [
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
7 Y7 f1 U; `# Q2 c/ J# D/ V. K GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
5 o9 g: b; u* s8 L7 b GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
^7 {6 d2 l4 h6 } L+ C1 }5 z GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel+ X2 ^& g f% k3 _* U
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
5 K. Q. H+ h a8 F- Z/ b8 I U0 J
// 使能 GPIO BANK 中断
$ c- T- k/ S3 L4 F5 d& Q GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0: w- m& L$ j% w! |
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6 l8 Z; `9 b3 B8 ]- l
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
* o% [- I0 e( M& y' f) x/ A6 i
3 D" U* E9 J5 y // 注册中断服务函数$ K/ P4 S K) f! X
IntRegister(C674X_MASK_INT6, USER0KEYIsr);6 Q R- `+ c5 F4 D2 v
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);; a* O% \! ?8 u: m
IntEnable(C674X_MASK_INT6);
* e0 {3 }# v" z
/ e2 F% U) L: x4 C' D IntRegister(C674X_MASK_INT7, USER1KEYIsr);2 M) T- J$ B1 K2 W" P: Q
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);9 m: J a3 D6 J
IntEnable(C674X_MASK_INT7);
w7 |; [, L& W! n0 g+ ^* _$ T
, T; b5 {/ a, ] IntRegister(C674X_MASK_INT8, USER2KEYIsr);
$ y! M/ q7 `+ a IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
& E% C% T Z( q# H IntEnable(C674X_MASK_INT8);
1 [) h& r3 s/ x- o1 ]* V2 E但是现在收不到中断,请问问题出在那里?谢谢
d$ v( B! U' N; x! I4 r |
|