|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:8 W, h6 M8 x& a3 g/ z
//kEY GPIO set
) a) \1 M! H8 N3 i GPIOBank0Pin1PinMuxSetup();
+ Z; d/ r$ s# z0 k8 j GPIOBank0Pin2PinMuxSetup();6 M! D& I2 l8 \
GPIOBank6Pin8PinMuxSetup();% \% y7 v: D) N5 [! l
GPIOBank6Pin9PinMuxSetup();6 a' O" L9 r) m2 n, J
GPIOBank6Pin10PinMuxSetup();; Z/ n. o$ V6 `- T
GPIOBank6Pin11PinMuxSetup();
0 n. s% L8 S1 X( x( c GPIOBank8Pin12PinMuxSetup();
9 R8 D+ @" T# _" c' u GPIOBank8Pin14PinMuxSetup();) o# C. R. s9 \+ P8 Y" b/ L, Y- S7 M
GPIOBank8Pin15PinMuxSetup();$ N; v" d9 C0 I: ]& h/ r
1 S; C" R4 C6 u$ C- W
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
! b9 T( b! z9 J6 u' ?5 `6 C4 I GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT); W" t# n6 U0 e% C) Q" ]
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);1 E' x; n3 L) [
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);+ o# n4 A5 s4 E( g9 K
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
: T' Z8 |9 V; y& T GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
6 \4 y" C% y9 j1 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
2 J8 m3 [. J* f; Z GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);3 I2 j. D% `! N0 o+ d0 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);$ J4 a+ m+ K- U3 `- C* _; ]
. k% C+ i1 C2 Z( b5 r* J( }
" N0 T1 V* n$ I* x6 }
// 底板按键中断
0 J9 ~( [/ ~ Z, O+ R8 t GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
; ~( M, v( q4 x8 k5 b. s8 i GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
4 `+ }1 {/ Z+ n) R, x1 S6 j GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
$ h1 N+ ]4 [/ J' E1 ?2 `0 t GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok4 z& W1 Q0 `. d
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down: Q9 o$ K: Q4 @6 O6 q/ c! b
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right0 ?* P. o+ D" ?! H
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up7 V- ?- I+ J) T- l, X4 C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel# O0 A. E! h0 w+ F9 ^' Z; z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
+ u/ c$ r1 T# y4 |7 w6 T5 Z5 c+ }! F/ o! C x) {
// 使能 GPIO BANK 中断
: [) }( K- D) H$ q! U8 y1 C GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO07 N* ~$ I# x5 B5 j& o" c+ {9 v
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6$ _8 i9 p7 `2 C- [' l& p% a
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
, f8 |1 N. V6 x5 O* R9 u: ]8 K6 H7 e
// 注册中断服务函数- i" }! }" w) H* v9 d5 A, z U
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
" L. g5 W/ `$ G# N9 x' ] e IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
7 t4 G4 d) r! v* R3 l IntEnable(C674X_MASK_INT6);
* r) c$ ^ O+ R% R" n- d& c0 O+ E( T$ J W; O
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
+ a, ]2 I; m1 J/ N9 j IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);. k+ k( ^$ T. E' }
IntEnable(C674X_MASK_INT7);
{0 G) s8 D' }6 m p) O, g
* I+ r. T0 K( V* W IntRegister(C674X_MASK_INT8, USER2KEYIsr);8 E! i, q- @2 i( W; `* h, j8 \
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);2 }# ?# ~) @- C$ L, {+ G/ f3 ^' }
IntEnable(C674X_MASK_INT8);- J- o5 P7 G' G% p4 ?0 x1 A! x/ g
但是现在收不到中断,请问问题出在那里?谢谢
6 J( f G8 Y+ s2 \& c6 P4 A |
|