|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
7 j8 ]# ?1 ^; x2 o/ Z4 [" F+ m //kEY GPIO set
& ?9 o+ H0 N/ N8 i* Z GPIOBank0Pin1PinMuxSetup();
7 _' a* r( q$ d5 j m% L GPIOBank0Pin2PinMuxSetup();
- n3 K6 Y2 u( ]( l GPIOBank6Pin8PinMuxSetup();5 z& `3 k( m3 r7 X! Y' u) q
GPIOBank6Pin9PinMuxSetup();8 |' A0 Q4 `+ i
GPIOBank6Pin10PinMuxSetup();
) T% ^8 q+ T2 O GPIOBank6Pin11PinMuxSetup();
6 _2 @2 A( ^3 |9 y GPIOBank8Pin12PinMuxSetup();4 K5 A V ]1 z5 S, C( i4 |
GPIOBank8Pin14PinMuxSetup();
f& F' ]6 l' ] GPIOBank8Pin15PinMuxSetup();
$ Y, i! {) r( N# i2 M, S/ d2 z' {) p$ Q9 Z3 K, v( |$ Z
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
- e. ?) |$ y1 Z9 j( u GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);( i' t) k4 q( e5 u7 K% b) M! L6 @
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT); Z2 t8 L6 p' Y' H4 z& k ^& h+ \4 i. _
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);' ?( ]3 r' i5 Q9 N+ Z0 K! B
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);: D! n2 e" y) k% Z
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);4 r) ]; W( p5 y7 {4 ?
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);' O' y: }4 L" o. w( W& R. }
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
' `: k C+ V9 c GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
* s' P; L6 ^3 P2 h( G2 c! V1 S7 O2 c, o
G8 G% r$ ]: ?6 ~ |
// 底板按键中断8 O5 M* C2 \; X9 I. `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none7 J' K" r5 f& L" u* X* z, m# w
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none, v5 j4 s! I! u' h" ^; N; ]9 }
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left! G o h% i, |7 y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok) c# E) X7 j. w0 k# z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down5 {' X& r6 L3 \. y X8 ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right) {$ R: F- e1 L4 E: _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
( C% ^8 T8 `6 U$ y4 Z GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel) |2 K$ \& }% t* ^0 L4 Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm: Y- r! X- [: l! W! `( V0 f2 F5 G! X
) e0 r& ^, v" a; W( L
// 使能 GPIO BANK 中断, l1 r* ]4 H C. e1 a
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0! q. g0 E( d( O) G* H) ~& y
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6% B: j9 w5 Y( m; K! _( M$ U
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
4 l0 C6 w( k' m! H# S1 k' X: M& G$ t [
// 注册中断服务函数* t4 z+ @" I" Z& z
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
; B6 N: u# ^( }& m1 X5 G IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);$ K) @- S% N0 M+ @9 u
IntEnable(C674X_MASK_INT6);6 R6 x) N" U! n" i
: q, y2 L( J2 B( T; F7 H. J IntRegister(C674X_MASK_INT7, USER1KEYIsr);6 N5 v: k# O! w
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
3 S j6 A K* w; ^* D IntEnable(C674X_MASK_INT7);
2 L4 B G+ ^# n2 F' l- A4 T1 J9 a( R# v: ~! `9 {2 T( C
IntRegister(C674X_MASK_INT8, USER2KEYIsr);; \( P5 Z4 C" y. T/ @1 E( G
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
) `/ v5 N6 `2 @3 _ IntEnable(C674X_MASK_INT8);0 J& K' J" ?2 A, S! M2 j6 |/ h) I, d
但是现在收不到中断,请问问题出在那里?谢谢
) f2 d% k5 @5 O8 N, b |
|