|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
7 b5 _& X/ X* j/ n% x! _9 J8 x' z //kEY GPIO set& |) w7 f3 V% I% l
GPIOBank0Pin1PinMuxSetup();
2 ?. i4 C1 L5 O7 u$ ~: |9 i, R GPIOBank0Pin2PinMuxSetup();
; n# V% T o/ a0 I0 m1 L& D( @$ n; B GPIOBank6Pin8PinMuxSetup();
0 A7 D. ^. R& k5 j GPIOBank6Pin9PinMuxSetup();( r) q. N2 N2 s7 a
GPIOBank6Pin10PinMuxSetup();
( g2 a& C7 L& `2 a4 e4 X- B, \ GPIOBank6Pin11PinMuxSetup();; u5 Q' s* A8 l4 a4 s. }
GPIOBank8Pin12PinMuxSetup();
2 t( {+ _. f+ D GPIOBank8Pin14PinMuxSetup();
! s: Z9 ?1 F' D GPIOBank8Pin15PinMuxSetup();
, U" [9 p/ @8 S- |% n
4 [# S: I L& X% r5 z+ `' {/ q; g/ n GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
8 Y# J. u0 Z6 ]4 @ GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);# e [) X N$ a0 c( Q' O+ f
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);0 e5 t' a% I9 p; Z* ?
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);. Z$ I9 D: p2 l9 T* R# T
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);5 s6 m- Z5 C$ H& ?
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
- z( X# c- c1 ?! ?8 I9 G GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
" @% D, k5 k1 Y+ ~- _+ j, ?! X GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);. T8 {/ c6 V7 @ U
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);# ^1 f5 c& S2 Z c
4 e7 J$ ]0 \4 N! Q. K4 d3 e" j
, l- @, H7 H g // 底板按键中断
) \9 G3 o5 `7 C" r GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
4 v: _1 P, {8 B$ l GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none# q; D8 ^. \; d; S0 c0 v' C" B! r
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
+ T. z$ L/ [: x1 \% | GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
8 t0 [- S/ k4 s7 Q GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
, k" f% }1 @5 n) y' x+ X6 M GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right/ Z4 n$ }, K; K: I G! D
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
0 l; e6 J. p t/ ?4 X ?& Y# w# c GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel s$ h- y! J1 @* L8 R# F' J
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
: H0 w% l: k4 ^: m; j$ _+ D) M- x2 T# q* @
// 使能 GPIO BANK 中断
0 U& n4 D) V1 E GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0+ ~& W% N$ r% |5 u* k) ^: a
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
B, M0 r9 [$ Y( H% d; w GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8- H: N* C, `( y: h) ?6 Y: V U
; h" `7 ~+ q, `- u {" G' }9 T // 注册中断服务函数
' C! O+ r- H" K9 u IntRegister(C674X_MASK_INT6, USER0KEYIsr);2 `) [7 N4 ?( v, N% |
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
. C# Y( _5 M3 e% m7 j; |. U IntEnable(C674X_MASK_INT6);
! ^ I/ B3 F) b% W9 E9 {) A8 t8 e- z; l+ Y) a
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
$ P2 @/ Q4 E z$ U5 {/ R IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
2 b! }, u! A! o IntEnable(C674X_MASK_INT7);+ i% V0 y9 y- y) f
5 y$ D) u3 A1 I1 {3 I' O IntRegister(C674X_MASK_INT8, USER2KEYIsr); {/ `: W0 J |( ^' ~% p8 w
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);' E! {3 i9 @6 q% z7 u. N
IntEnable(C674X_MASK_INT8);: a8 H- O" M1 q1 y7 [
但是现在收不到中断,请问问题出在那里?谢谢! x# R. r: [1 E5 k3 m
|
|