|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
+ d P. Z) F" d //kEY GPIO set
% J2 z' {- x$ L2 `9 y7 |/ N GPIOBank0Pin1PinMuxSetup();
1 C5 x4 i5 u" D2 e' N+ P GPIOBank0Pin2PinMuxSetup();- q8 m5 \8 k+ v; n* G/ ^. I) ?
GPIOBank6Pin8PinMuxSetup(); |# T+ X3 [) c( N% Q, s
GPIOBank6Pin9PinMuxSetup();
4 P. _0 T3 ]4 o' W GPIOBank6Pin10PinMuxSetup();
5 g; q' a5 r/ }' G9 z' ] GPIOBank6Pin11PinMuxSetup();! d0 p2 n3 H) V( Q+ K, x) J
GPIOBank8Pin12PinMuxSetup();! y# q+ o, o2 ]8 l
GPIOBank8Pin14PinMuxSetup();3 {. p# e% d3 ]" d* i: P' r
GPIOBank8Pin15PinMuxSetup();
4 `6 z* E; V* i/ ?4 c, i1 a7 q3 A
0 ]" l7 ]0 k! Q/ O! ~/ M GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);5 i# P: Z9 b0 F" e G5 h/ L) n
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
* ^7 O* H: V2 s GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);. `2 i. h' G; M
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 A9 K+ H7 y, T
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
. G W4 I( R- s GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
: q. Q) i8 z+ v5 V/ h5 { A7 I& b GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
( v* K; F5 ?2 | GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);5 e; M$ B& _, N. _: D
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
4 N) Z+ L0 w/ `7 n/ h
0 {" N0 B- j7 Z3 z4 ]) z3 f
& u2 A1 A" _( i ?" }# ` // 底板按键中断& B! r3 Y* U. T7 o& s
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none. W! I8 r/ }6 T |0 _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
# h7 ~& f& }8 J# k GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left2 |# b8 v$ \- B+ z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok3 |: e8 l1 D: A* c k6 f4 H% s
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down/ ]* J! |, v" H+ j3 b8 D9 x+ e
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
k5 a: J7 ] _* E) T GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
/ j( v1 y7 O( {+ k( ?/ T5 P0 [ GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel" F) N$ h2 V9 p, f& U" j6 w2 ~
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
( O! b6 J5 ^' P8 k* w" e# m# j; b. o; |' U& s; J& V. k% d9 B
// 使能 GPIO BANK 中断% \# K/ t: K- F% V
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
4 ^ `7 R6 ^4 S* e( B% I GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
& N1 W; E+ E5 N2 x4 A9 J/ [ GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO81 {+ Z9 A$ d) l5 P) |0 V0 h7 u
0 j! p" u c, p4 R# @- c! z // 注册中断服务函数
$ A& a4 x- ?, q% {3 {) k IntRegister(C674X_MASK_INT6, USER0KEYIsr);
# r' v- M% @6 { IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
7 |) W, I& y A$ W' c# [ IntEnable(C674X_MASK_INT6);: W2 c+ Z$ k$ Q2 E! J: P3 U
- X+ @7 j) G0 a IntRegister(C674X_MASK_INT7, USER1KEYIsr);8 q% u. i2 N# o3 W0 v
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);# g* e# A4 {& ]) w; M7 `
IntEnable(C674X_MASK_INT7);
" `" y/ u/ [! O- @0 n2 S, s
$ ] o* W/ B5 G) R IntRegister(C674X_MASK_INT8, USER2KEYIsr);
+ I# j D" m+ y7 T IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
: ]! b4 d w N7 ?3 A IntEnable(C674X_MASK_INT8);- L) u5 J+ u: o
但是现在收不到中断,请问问题出在那里?谢谢& Z/ k5 i3 g+ j/ o, l- C
|
|