|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
8 P3 J6 i+ @/ C) s8 e9 V+ [ //kEY GPIO set
5 Q$ ~5 i6 L9 `: @+ L+ `/ s5 R2 b$ F, E" X GPIOBank0Pin1PinMuxSetup();9 F& ~1 u$ v. @. ^8 }
GPIOBank0Pin2PinMuxSetup();
) v/ f% K$ Q9 w! T) B) A; h0 _ GPIOBank6Pin8PinMuxSetup();4 R" ~: a) s2 w% p8 X; u3 C
GPIOBank6Pin9PinMuxSetup();7 B: ^, j, k) t7 l- x
GPIOBank6Pin10PinMuxSetup();6 i Z l" T3 z" r4 f) S: y+ }
GPIOBank6Pin11PinMuxSetup();
4 Y4 @: @; X' @7 h3 Y; I2 k GPIOBank8Pin12PinMuxSetup();( I# `; ?$ N7 |2 \( G) A! F: F. d
GPIOBank8Pin14PinMuxSetup();
' q( Y! o# \2 T; Q0 R GPIOBank8Pin15PinMuxSetup();! ^; @$ u% E2 W& G) U3 a7 @* k
6 {3 c% h! ^0 i1 c6 F! s. A GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT); L: v+ X1 q% c0 P8 W
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
" q, n2 r# @1 K T9 k' R; ~# r: l GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
/ e: @6 f2 F$ ]7 X/ m GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);# a! u- s# ~4 a! O0 d
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
e0 _# h/ w) a. r GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);8 \$ i+ y4 D3 q7 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);" Z. n; _) }& u, J. Q2 R) W
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
8 L5 j; T5 P* J. a0 S/ { GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT); X) T9 j! k5 r6 ^1 l5 J
* @& K8 @0 ^3 ?' {4 {* E8 K
7 N" w! D* t: |. G) }; L1 u6 S // 底板按键中断- Q" k; d( `& O4 X5 D) [% R# K
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none7 g! M% }1 r5 `( n4 Y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
5 i+ v2 p. D, R9 q7 Y. K" F) Y GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
8 K) d9 I+ [. V% M* R7 v1 _, p GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok' `+ f% f( c9 a8 O6 R% V0 Y7 X
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down! r, i" p7 {% E; E1 A3 T
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right- F/ p \$ k9 ]- ]; h* g
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up2 @* i+ v5 F) F! X
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel( g! Q. X v% O g+ U% K
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm0 w% }( E! H2 ]) I/ |, b
% d$ n. Y2 n8 {$ z' ] s
// 使能 GPIO BANK 中断( M$ W$ S1 S+ @' _/ V6 ~
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
; P, _$ W% s2 ` GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
1 |) g7 B7 J3 I9 h- K' I" K( X; z GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8: Q( y$ O4 J' J% s( L$ i8 K
; D* k" A- F9 L# ]0 K
// 注册中断服务函数
% ?* P8 m. K9 x9 t, _ IntRegister(C674X_MASK_INT6, USER0KEYIsr);3 t. a6 D d- H/ g, g" {
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
6 c) z: A3 b) ]) ? IntEnable(C674X_MASK_INT6);
) C( G2 Z8 T7 s0 `' U T9 F1 p2 `3 N% ]# a1 a7 w8 l
IntRegister(C674X_MASK_INT7, USER1KEYIsr);* B" S% g( j% A' R) }% W- h& S
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);7 ~! m! }9 b8 t8 ?% [, W& O5 K' b, {3 C
IntEnable(C674X_MASK_INT7);$ z1 ]3 Q' M5 ] \9 b: k% p
- @2 G9 q" r% D/ W) ^
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
. s' Y* }5 I# h IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);) H$ f" M# @ s' i" i( r. a
IntEnable(C674X_MASK_INT8);
4 m) g; {+ n& E! {4 u7 P( r但是现在收不到中断,请问问题出在那里?谢谢
0 ^' R) n+ b; m, N |
|