|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
+ W0 x4 t6 }# t9 v$ u: {& H //kEY GPIO set
/ Q1 Z% i* d( n" j T1 c: A GPIOBank0Pin1PinMuxSetup();9 m' u6 x: ?+ `7 M6 C
GPIOBank0Pin2PinMuxSetup();- L% G7 ^# B0 V0 z
GPIOBank6Pin8PinMuxSetup();
7 H4 Q1 i. r! { GPIOBank6Pin9PinMuxSetup();9 m& \ K# P; W5 F
GPIOBank6Pin10PinMuxSetup(); s* Q7 o) o" K% K; z, `, h
GPIOBank6Pin11PinMuxSetup();
3 ^4 u7 u$ c' T/ p GPIOBank8Pin12PinMuxSetup();* |6 G) m* j1 m
GPIOBank8Pin14PinMuxSetup();! S% M* x1 {+ i5 S. \) C- B
GPIOBank8Pin15PinMuxSetup();' N1 `2 S( ]3 Z; J( [( N
* k; p P% P0 I7 @3 V6 D; ?
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);+ C) H; P1 b$ x! b, ^. u
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);: ~! ?$ }# e' K9 h; ^- f
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
1 l7 D) N$ C+ h5 ^! d) H GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);! [( S, U, F' L. r; f) U1 w
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
0 ~9 ?5 z% n+ _ v! c GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
1 V3 e! [$ R3 E$ t7 b' s2 \ GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);1 g4 g7 ]+ E4 x
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);8 O8 ?2 p6 w" p/ |2 o' a' I
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
- z3 n# M* z: B& u E J+ l. M1 g; R& I
6 X- b% j9 M) Q" p" c' c& J6 c2 m/ x
// 底板按键中断- Q6 I4 E, d$ v9 M( n+ {! v
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none# r& \' H5 W# ]' w. _3 }9 h
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
7 L+ d! E3 O7 S4 |* v$ a8 j( m: M GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
1 {- G; w5 e" ]5 o# N GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
8 r: q+ y. M1 O7 P- ~7 K: J2 t! ?! T, p GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down+ c& a, P( p6 J W9 g
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right% k( u4 U: @4 y/ E
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
3 _* i) B5 `! K8 N3 G9 E GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel; s4 a6 L! F2 H0 n. K( X8 _! l) J
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm [. A) z l) W
( B5 ~6 A% s! X9 \( |$ M // 使能 GPIO BANK 中断
/ U# S% R5 u) C" D: y* z GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO04 Z* F; Z1 {* }
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
4 _& E! V1 W: B! m8 p |) g9 u+ i GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO86 ^2 Z; l# b. P1 ]2 X; _& R K
7 H1 K1 `1 T# k! Y. T/ ?1 U
// 注册中断服务函数 d, n2 ? O- O0 O- @
IntRegister(C674X_MASK_INT6, USER0KEYIsr);1 Y& s% x: m5 a9 T, @9 l
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
+ Z# ?) G; w; T& |1 d4 ^ IntEnable(C674X_MASK_INT6);( I7 o% c5 l. d) d
9 t9 y8 p1 ?. T) J% l# Z( r0 t
IntRegister(C674X_MASK_INT7, USER1KEYIsr);( P8 o! V4 B0 Z. q& J; H. R7 \, s h
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);& P3 {, Q& i; ~$ X
IntEnable(C674X_MASK_INT7);
5 x0 m2 H8 g; V7 q6 z. a8 \. {: m4 ]: t9 N+ Z8 S, O
IntRegister(C674X_MASK_INT8, USER2KEYIsr);1 R2 z3 M; U! P0 {( M3 ]
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);7 r8 x! E1 {( v4 b/ J
IntEnable(C674X_MASK_INT8);
9 x* e/ U1 ^% ]2 h7 j1 L但是现在收不到中断,请问问题出在那里?谢谢2 m3 A3 C/ O. E+ a+ B
|
|