|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
9 j1 b B3 |5 I# i) m* }* t+ Y& p //kEY GPIO set
, B) q/ R% ?% ~( _- Y$ H2 z0 w9 s" q GPIOBank0Pin1PinMuxSetup();
6 t$ Y3 p4 o* X" l6 W, i GPIOBank0Pin2PinMuxSetup();. @ m5 G- [# S( s: M
GPIOBank6Pin8PinMuxSetup();7 b$ {1 a0 l1 |% @; [/ f4 Z3 ~
GPIOBank6Pin9PinMuxSetup();
# c! l$ l' {1 y' L. ?) l( C GPIOBank6Pin10PinMuxSetup();
, c* p0 H) J" E D, }% Y* t GPIOBank6Pin11PinMuxSetup();
5 t# m! u/ U& M/ B% d7 O) }. \ GPIOBank8Pin12PinMuxSetup();
: c6 L8 [, X6 R% y M GPIOBank8Pin14PinMuxSetup();
6 F1 t3 Q4 C. R! m& ^ GPIOBank8Pin15PinMuxSetup();9 l' U7 z* l6 P1 W7 F
/ h {* g/ t2 h8 Y+ d
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
4 }7 M! X; ~8 S3 k GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);- @$ Y& a: k9 q3 m9 f' h
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
5 Y% x5 r$ Z3 {8 M GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);; F$ f1 B6 `8 F' g
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
4 C8 S1 T" q8 l% W4 J# c GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);; | i0 J4 W9 V3 C! k3 b7 s
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
I3 p. q$ C" p& w4 P, p) Y GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);6 F3 b9 J% u8 I! Z* e
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);! [3 B5 ?5 k% m4 V: f$ ~
/ L8 t3 v% D( p! C8 e8 t
! t( f J" U6 R2 M // 底板按键中断7 I7 r& O3 @: K$ f
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
. _/ k/ z$ M, s9 J GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none8 B3 q# J, L6 c: k4 V1 ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
' r5 p# U3 j# T) n, w GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok2 |+ w. x/ ~$ U5 {2 Z' f& ^
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
6 h, f3 t. H& Y GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right% E; L7 R7 C7 _
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
+ I% \" Q% e8 k0 a6 }0 |4 p GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel' J `, Z7 O* D: i& j/ W
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm& t! W: b6 ], u
2 a- t! T8 D' M' B! ?2 v. R
// 使能 GPIO BANK 中断
, l' u: l+ _8 E7 L GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO01 ~/ ]$ i t- v" A7 h7 u
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
# O8 _" `* w; y- M3 @ GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
6 F& S; i" R' D" z) P$ `2 P8 t3 T9 d& H& b/ t6 y0 R
// 注册中断服务函数* @, j4 `( C5 s2 |" o2 N) T1 M. F
IntRegister(C674X_MASK_INT6, USER0KEYIsr);) C4 T$ @9 t8 r
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);$ w) }$ D8 k4 u# C% C6 B, R
IntEnable(C674X_MASK_INT6);5 O) ?3 |$ g1 j3 s3 Q- L, d% s
$ t3 w; \! X& G4 S9 E5 r4 v5 j* Y4 U IntRegister(C674X_MASK_INT7, USER1KEYIsr);# V/ i; I0 P% F; ~
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
" M# {- U" t' k$ ^8 k IntEnable(C674X_MASK_INT7);
% B9 H) c( f. _: Y7 C1 L
7 \+ K) o1 \8 t; d1 e IntRegister(C674X_MASK_INT8, USER2KEYIsr);
2 r6 ?& E5 j4 o$ u, B( \( \- p IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
$ D, ~; R7 k' S$ b( P& o5 k( U IntEnable(C674X_MASK_INT8);" {, P: P4 e+ n$ h/ X6 d) ?
但是现在收不到中断,请问问题出在那里?谢谢, l7 f9 ^9 @) T7 a. }: }& g$ Y
|
|