|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:2 r6 P) Y1 a4 o
//kEY GPIO set
( O/ T- v; f+ d( x* j/ t GPIOBank0Pin1PinMuxSetup();
- J& N3 u& N' ^ GPIOBank0Pin2PinMuxSetup();1 N* ~ f4 N, [9 X
GPIOBank6Pin8PinMuxSetup();% D7 u: n6 `* s1 K7 z5 \6 v
GPIOBank6Pin9PinMuxSetup();/ g4 i( p8 s! w6 W% v
GPIOBank6Pin10PinMuxSetup();
! }, B/ f/ V; }, }2 X GPIOBank6Pin11PinMuxSetup();4 Y$ `1 ?3 M9 f* d, z2 z2 e6 w* |
GPIOBank8Pin12PinMuxSetup();
* g* ~; [6 v" S- C7 U4 t# [- a GPIOBank8Pin14PinMuxSetup();7 u) h& P4 W0 |* R: U! }
GPIOBank8Pin15PinMuxSetup();
4 j& k9 G5 q7 h E; P
# k' {3 r8 n1 T$ B6 L5 F r" z8 r% H GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
$ v6 ]3 z! k, K7 M* l GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
; G" _2 i% S1 C/ \/ P) a GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);8 x! S: D$ E ~% l
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);# u/ H ?/ r9 d3 G# X' b l. e- m
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);! E: @4 E9 o& B9 _0 b
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);4 @2 h2 h5 s0 n0 y: e9 l
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);$ e( O# Q2 [ S
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
) f5 m4 T& u9 J& ^ ~- v' h* s3 n* { GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
! @5 _' k3 l4 h1 ] Q/ l" w* J& ?. l, N% f/ P
: h" G6 c) [4 j. h, ]
// 底板按键中断
5 U/ e7 i4 g& b9 v GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
' Z) o. ]$ C* ` GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
3 P8 o3 d P- \5 x$ F' @ GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
( d* z% i- Z$ C( ^: S' c GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
, Z0 c. d4 Q/ m, d GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down" L* p* {% d" _7 D% R1 B
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right5 l. n4 _1 U. ^/ M% o/ m4 {
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
* I/ m: q! Q5 R( R GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
2 W. M1 i0 s3 Z5 F) S' z GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm# b. {4 _0 i1 A8 O y; k
: n0 T2 L; W0 k // 使能 GPIO BANK 中断
& G) P+ ?: p8 u! o: S5 K m GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0, m# g! E5 D1 Y' b, u0 q' J. P" v& _
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6, w/ Z& ~; q3 f! t9 A* e3 X
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO89 g+ U/ e# r) Q0 m- R3 [; y) o
+ ]' r5 s) y6 T* T! D
// 注册中断服务函数. @8 Q8 `( F+ z, U
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
8 y$ N& q' l! G) \& O IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
/ c6 b7 S* y- j# S( @9 R$ A IntEnable(C674X_MASK_INT6);, \7 a# D) n# U" A$ m1 p& |; N
% N5 ?( n5 E* s& [
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
) W2 c( e0 }2 R( S IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
Z; H; Z. R+ O IntEnable(C674X_MASK_INT7);# z' c" V0 B6 X" E) D& Z
+ }! b! M! y/ G3 n# a
IntRegister(C674X_MASK_INT8, USER2KEYIsr);/ f/ d3 T) Q+ A( s- c1 a% q
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
# E, l( c+ j) F1 Y IntEnable(C674X_MASK_INT8);
, q* Q; [8 @& d但是现在收不到中断,请问问题出在那里?谢谢 x4 `( ?- W; l t& M$ N
|
|