|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:/ k6 C1 `, s9 J: _ k' P
//kEY GPIO set
" F) w* D. f! I; [ GPIOBank0Pin1PinMuxSetup();
* v; r8 z* A8 } d/ ~3 ^" e GPIOBank0Pin2PinMuxSetup();
8 y$ X* Y1 p8 Z7 ? GPIOBank6Pin8PinMuxSetup();/ m' p5 ^" S; l. L/ B
GPIOBank6Pin9PinMuxSetup();2 H2 _$ O) r# V9 h( C' n8 \
GPIOBank6Pin10PinMuxSetup();
8 Z" z+ S3 x$ U- O) c0 k GPIOBank6Pin11PinMuxSetup();
: N! o/ x2 P; z2 g GPIOBank8Pin12PinMuxSetup();, n0 m" R' u' g8 ], R( x- o# V( x
GPIOBank8Pin14PinMuxSetup();: c5 H( t+ x' U0 `6 w$ ?3 D
GPIOBank8Pin15PinMuxSetup();1 a4 M" b B4 v% T: u
! p* ~8 S( J' r8 K
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);2 ]' Q) g; {9 Y' T/ g4 y
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);0 G! q- Y! M3 [; o# w$ X
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);8 q! z; `3 n5 k. Q% K
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);6 f- `( L+ a- z+ T7 t) s1 X
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);5 i7 K9 k+ {3 H' r# S
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);' R( T- r8 C6 p g" W. q7 Q6 T
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
3 d8 I; R& G1 \ GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);6 e9 m% H- @0 K1 D5 p; `
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
b6 q, ^6 r1 r
& R$ `1 A+ R7 j' [! |; v4 {' Z7 U1 Y
// 底板按键中断
, j" d* |5 _) q$ F GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none- J( r* F0 J4 @: W# r2 Y' X+ z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
3 D2 s" y& V4 d& R2 d# e GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
" `# g, g9 c j- Q GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok( C' }+ Z' ~5 `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down- t/ U7 B& s( @* k! e5 \
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right; h8 v" x1 R) H+ R0 x( c
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
8 g# I, J9 \" K: B GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel& ^5 K/ g& f' N! P* U
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
" E+ r; |- E! d
! @3 `& i6 W+ u. P // 使能 GPIO BANK 中断4 g! ~3 F1 K5 }. B6 K
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0% f4 Z) W' X0 E6 V% e
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
0 u2 g) Z& q4 u3 K# | GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
" U8 J/ d8 N5 G. ^# t- P% L$ x! _, J
( ~5 A. z# @* o8 B3 Z0 R // 注册中断服务函数5 T4 `" z' x3 A( w1 N P& _1 L
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
! k' ?, V8 ?, }1 _6 u IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT); ~+ e* V2 |5 u' X
IntEnable(C674X_MASK_INT6);
7 v6 T% \' a+ P' h) z6 e" V$ |( n' v# O0 _
IntRegister(C674X_MASK_INT7, USER1KEYIsr);2 X! O3 e3 q" {# c& D; F h
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);! ?4 b% n0 o. I
IntEnable(C674X_MASK_INT7);
+ z8 U0 B* L. T9 H4 Q2 y; A
4 l1 {9 I! S# U L2 w. v4 L: b* f IntRegister(C674X_MASK_INT8, USER2KEYIsr);
2 X, W0 p# k* r# s& H IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
/ f5 C, ]2 n% t# ~3 { IntEnable(C674X_MASK_INT8);
* b, {5 ?% d5 R3 t1 |! |但是现在收不到中断,请问问题出在那里?谢谢
6 q' [5 l3 a5 r1 D6 B7 I' e4 E |
|