|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:7 V" m8 Q1 p0 q4 k' S; Y
//kEY GPIO set. j; e( v) \: x& Z& R% p* J7 [1 O; x& m
GPIOBank0Pin1PinMuxSetup();
! k6 I' {2 V5 ^8 z6 r# l9 ^" g GPIOBank0Pin2PinMuxSetup();) l- ]/ p& T1 ^5 j5 u% S) ?; W
GPIOBank6Pin8PinMuxSetup();
" n' S7 k; F1 X GPIOBank6Pin9PinMuxSetup();5 Q' s5 h/ | \2 D
GPIOBank6Pin10PinMuxSetup();
! A: t5 }# E% I- y GPIOBank6Pin11PinMuxSetup();
# j7 Y& C! Z& m$ e GPIOBank8Pin12PinMuxSetup();) N }6 u, g& l
GPIOBank8Pin14PinMuxSetup();9 e. w0 U3 c+ i; v. ]& }5 f
GPIOBank8Pin15PinMuxSetup();
@9 O. a3 \2 g' M' Y( a1 J" n5 u1 ~5 r
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
% O2 V; Z2 W" T, g: K7 a GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);3 w7 u4 |6 t2 f2 F6 O
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);8 N& h( Y# l/ ?. T5 w+ u$ ?
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);* H1 u9 {, P2 c4 O# n! Z
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
( S3 p. s. S7 c GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
* W1 g0 T' J% z( \" T GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
1 F$ B. @0 p6 q' e0 ^5 _$ Z GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);( B9 i, \2 B3 `- A+ u
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);( `# p0 ]1 K3 D
! D8 \/ c* K1 r5 ]1 j) }1 @6 i
# s9 d c Q# W' C% R% }( L // 底板按键中断% J+ w5 X+ u; ~. Q& P$ g1 W; h" ]
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
- m* X. I0 @! E6 R GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
; |. B4 @: X# P5 t$ O4 } GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left; ^: F, `& k5 T0 j, g
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
" l0 L1 M+ Q0 B$ d GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
# ~: B2 L+ |; X! W GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right* z# `9 v1 q p7 D" i
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up, D7 n$ y5 x8 s5 |" |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel2 f: l _# r$ g9 D
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
2 x# q9 G6 @1 R
8 y, v* {. K5 ~0 j Q. V // 使能 GPIO BANK 中断9 |7 |8 M% W, U2 v$ v) z% w& I1 o1 t
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
1 h+ ^5 |/ \" B. R GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO68 d4 ~9 _8 y( B& T1 @/ U
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
0 j `! x# g% b) `! a; T& @' e+ U Q8 ]3 p8 Q( F# S
// 注册中断服务函数
7 ^! D: p9 A# [+ z6 G @3 ~- y& z IntRegister(C674X_MASK_INT6, USER0KEYIsr);
8 P( L0 {) y+ [# X- W% z2 z9 s IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
5 D9 I3 e& h1 ]) o( T% s; k IntEnable(C674X_MASK_INT6);! f% e5 y) a, n1 V3 U2 [7 H5 p
* G% i# Y" |# u& i$ w7 P* m) b, s4 Q
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
2 T l9 F7 U$ `# P5 l3 P7 O# v( G IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
0 @( ?* a- C. c$ J IntEnable(C674X_MASK_INT7);
. V& J$ v1 D+ u/ y" C$ F" f4 x% R& P9 r( _" U; m' g
IntRegister(C674X_MASK_INT8, USER2KEYIsr);0 k0 n# z8 M. h& m
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);* T5 ? d* y6 N# I) v4 g! y
IntEnable(C674X_MASK_INT8);
" t- n, P0 N4 F- E. l但是现在收不到中断,请问问题出在那里?谢谢
: H7 i; E5 K' M8 [2 @4 ~% ^ |
|