|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:6 V7 D _1 o8 Q1 M3 R& E4 W
//kEY GPIO set
7 o/ d! F- w; Q& w$ W GPIOBank0Pin1PinMuxSetup();2 C ]( ]2 @; K8 X. i0 s
GPIOBank0Pin2PinMuxSetup();
& ]9 J* N5 c. G. z K0 n+ e- U7 p. h GPIOBank6Pin8PinMuxSetup();
+ Z6 w! b. |0 q, x! `+ x GPIOBank6Pin9PinMuxSetup();
0 H p7 e8 f" Z; [+ H GPIOBank6Pin10PinMuxSetup();3 r$ a: r( }$ x$ e0 j% R0 e" y
GPIOBank6Pin11PinMuxSetup();$ t" _/ v: b# ]3 \& B/ F
GPIOBank8Pin12PinMuxSetup();
- W! X( K8 S3 K2 _5 I GPIOBank8Pin14PinMuxSetup();, L- k. `$ a. |/ k' p' p
GPIOBank8Pin15PinMuxSetup();
, I" m: S9 O0 [ g8 z* K/ I/ _4 t1 i% x3 F
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
$ R3 J( s* B# `) ^2 f5 B7 h GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
6 l6 W/ }! a$ u$ f, ]* y# | GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
/ n; m; b6 v0 L. h/ o# @* S GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);8 t2 d8 W' d; Z) U
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
- j7 ]4 q6 R( v. J4 ~* Q/ a GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 S [$ O1 a1 Q1 w5 w; Z) K
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);0 `6 {; W; i9 w- G) r
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
0 B" ~5 l) b1 s% O+ e GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);+ V: E+ k9 z' r7 o& H; o5 @) E
w& c3 D( s7 C% F [+ @
1 d4 C7 z0 y7 c7 b
// 底板按键中断
3 l7 u8 m" u3 e/ y1 d# V GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
7 K8 L- x/ g# S GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none- ^& l% O4 |% F1 {( O
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left; o6 B9 e9 E( H9 ] @
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok* W' P6 |( w* H
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down" [$ l# [5 n/ Q4 P p" `+ }; S
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right# [/ K% a* `; w8 }( B7 m% \
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
0 w( V% R0 y3 f( ^6 _- y5 n2 m GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
9 i; c! C: R& f8 _6 l GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm2 ~, ^" k9 R$ ?5 ]
9 M! e" W; J# j+ k
// 使能 GPIO BANK 中断% N- {% b* v! Q; I
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0" Q, a# q J& \+ \8 e
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6, u! p L# o9 B) j
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8- H0 V, r h5 d2 F( t8 \) x7 h
] w& O, I1 ^0 B( C0 j! k // 注册中断服务函数
# Z& {: u0 e5 N3 Q IntRegister(C674X_MASK_INT6, USER0KEYIsr);; l- o- m I- C \
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
6 Q0 w4 u, O' D6 i7 n: G IntEnable(C674X_MASK_INT6);" C; w# o! T* q- a
$ B0 r X0 e. c( m6 u IntRegister(C674X_MASK_INT7, USER1KEYIsr);$ K$ B0 S- l9 ?* H/ Q
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
( G( Y! g" s" Q5 e; [, s- V IntEnable(C674X_MASK_INT7);2 l) d* u! y9 E8 n
- l1 P* W" Z% J! i
IntRegister(C674X_MASK_INT8, USER2KEYIsr);+ W$ n; j/ |% D2 i; D h
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);8 s5 r3 E5 n d8 P
IntEnable(C674X_MASK_INT8);
3 H" Q. m* y5 y b6 m但是现在收不到中断,请问问题出在那里?谢谢
) X# _. k* P+ h; A |
|