|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
* I5 x" j3 ] H' n //kEY GPIO set
% S% u3 S( s5 d% W9 `# ^ GPIOBank0Pin1PinMuxSetup();7 D1 \' I0 { D+ ^2 L
GPIOBank0Pin2PinMuxSetup();
2 k$ t$ c" Z6 r; h2 Q* I GPIOBank6Pin8PinMuxSetup();
1 M$ w) w" c1 D5 }2 }2 N7 x4 g GPIOBank6Pin9PinMuxSetup();! n: D7 I% R I& P3 _( x, [
GPIOBank6Pin10PinMuxSetup();0 p6 n7 N' n) V7 O- A
GPIOBank6Pin11PinMuxSetup();
5 E7 j) \2 I4 t$ T GPIOBank8Pin12PinMuxSetup();
5 V5 r- t1 _, h, O1 q, e* ~ GPIOBank8Pin14PinMuxSetup();
( \4 g* W; M. ]; L3 a GPIOBank8Pin15PinMuxSetup();
$ n) y8 R. t3 d7 _- T" [6 @
6 N# x. m/ j" l1 y, y3 V. ]7 z6 G GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);* b2 W+ H. X$ I8 R
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
6 m) [/ ^1 o. p3 u$ N; t GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
# _8 \/ Z- p/ a: m8 _ GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);* u* ]9 I o# H3 _+ ]) h
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
0 E0 q/ T9 I& x) j GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);* Q1 H% q6 I- e4 {1 w4 ^" F
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);- h6 j& U' {8 J5 n8 x [: d0 Q
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
6 M" R* O, e3 U) l: f GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);3 j7 U" J4 b) C6 T! A5 o# t
& K, _* p" }. s( v$ o
, s& f# u" F5 t$ n h7 ?9 o // 底板按键中断
: y% x: V Q! S# \2 |' } GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none* n, @/ ?# U; f3 r0 @, ~' C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none4 u7 P1 {1 l6 f) O; _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left) ?( W; A" ^1 ?
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
1 {; X; x3 U, ]: L$ S GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
5 y4 H7 ?. ]' C7 P( p2 a* p/ P GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
& M, t% j9 j) Y4 |& {* H GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up* y: _* B6 V( T4 O& e2 @
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
5 E8 U4 N7 U' N: {6 r4 _. G! V GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
$ H( M8 a9 j1 q7 r6 B& Y" [/ _$ I7 R! l- z' C4 e
// 使能 GPIO BANK 中断
6 v5 X4 U* g: p' X GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
8 Y, d6 Y( ^5 T" k' c) m# V GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
" e% ~. d4 {, p5 F7 m5 e1 n GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
* O6 {' K' p& R7 T3 w+ e% l
W$ f4 l8 M: o# O! | // 注册中断服务函数
. {6 C6 w3 q7 c+ s1 w- ~, \ IntRegister(C674X_MASK_INT6, USER0KEYIsr);( w: ?+ D2 G/ q" G1 l
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
8 K( f+ ~' ~; Q( _& {; g IntEnable(C674X_MASK_INT6);
, w; h# {# o+ ~! E
2 O3 o$ {; p7 d3 j, X IntRegister(C674X_MASK_INT7, USER1KEYIsr);) X) x5 M3 r: u; C: r
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
( f4 l2 V, B( ?. H: j+ z IntEnable(C674X_MASK_INT7);
4 ~* X* a& ]) E2 X- t) y$ ~( G) e0 {, W1 l
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
6 S5 c( M- ?& z. J9 U IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
1 c( c+ H1 I6 p( u% F8 ^ IntEnable(C674X_MASK_INT8);
* M$ N$ m: R7 z5 E3 a- _6 R但是现在收不到中断,请问问题出在那里?谢谢. S* Y" P7 s* n5 V5 N$ H
|
|