|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
0 } E$ S! B) K% m$ H //kEY GPIO set
* T5 ?# a+ b R( H GPIOBank0Pin1PinMuxSetup(); M" ?! _4 @: P6 `
GPIOBank0Pin2PinMuxSetup();
7 R% V% u& i: I8 o- d, z, B7 n GPIOBank6Pin8PinMuxSetup();% b" K S$ @; M5 X8 ?0 ?. z
GPIOBank6Pin9PinMuxSetup();
7 D; B7 v5 h6 { _2 V GPIOBank6Pin10PinMuxSetup();/ O- C$ T! N$ w" C& R* x* Y" J" {
GPIOBank6Pin11PinMuxSetup();
& |$ i" R9 r6 r( u GPIOBank8Pin12PinMuxSetup();5 B( Q3 q/ v$ |8 r: g& k! c0 O
GPIOBank8Pin14PinMuxSetup();* `5 q" P1 C# C0 a
GPIOBank8Pin15PinMuxSetup();' @$ l$ {' f; }# {+ I2 v7 P5 { \
" c o* m) j+ Q1 b GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
2 Y, \; g; j9 l/ X GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
; |! p! F# }. | GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);' L; V& p, d; ]- L. t! v
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);9 Y2 m; Q" e4 `, A& a
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);* f% Z/ n2 b9 p- Y' a( j; ?
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 g4 s) R A0 t) e. y$ M
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
[4 T! H* ]6 e' y# p A3 Z GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);- V9 D" B, ~: [/ ]/ B- f- S
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
: i/ t: |/ @ s8 ~( S& i, V6 b- U2 E0 b* I$ V& f' B- @# h
' A) ~0 W' t- e* G* C, B // 底板按键中断: ^( \+ O8 Z; F& j a+ w0 Y
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none0 m# e0 O+ C' T: L* ]
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none4 q, L) O* U {* Q- c! J
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
; v' n; y7 F0 _) p0 _ GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok1 d/ I) u+ e$ m. Q. k& j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
0 L1 K+ o( t: c2 B GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right r% x% B1 W. m
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up- b0 F4 s: S$ Z2 f9 L1 O- n3 Y- j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
7 p% ~7 H8 O% p9 n) q# [4 q GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm& n+ |6 F9 f- n" v! d' V
7 M1 S! I. `0 v' X
// 使能 GPIO BANK 中断
. u* T( A2 T+ t: ?2 n' Q GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
' t7 H2 c" l' [1 e# f0 V5 T GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6' v8 ?1 ^9 Y% K# Y2 V: F
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
3 ~% g# b- H6 t# n' x u X7 {0 ~! B! T
// 注册中断服务函数. ?# o2 C, K, v* @* y+ D6 `
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
; c+ }7 W) f9 V' w4 g9 ? IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);* C; t0 h6 Z ~" R: I( q. ~
IntEnable(C674X_MASK_INT6);$ d6 y8 c ~5 A! `2 }/ z
; W6 U1 y) N. [0 b/ q4 y1 C2 L
IntRegister(C674X_MASK_INT7, USER1KEYIsr);' U) u3 @6 b/ Y1 x6 ~
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);# o- D* k) }2 I- b
IntEnable(C674X_MASK_INT7);! j1 _; Z6 s% n* s) h) u, c
. |/ B/ S; y1 ^ IntRegister(C674X_MASK_INT8, USER2KEYIsr);
) |: |* X. n. W8 m6 E IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
3 }# v. E `( n7 w% ]( M3 W/ o IntEnable(C674X_MASK_INT8);
) z/ A. A5 b9 b7 m' E- H, S但是现在收不到中断,请问问题出在那里?谢谢
5 D+ C% e; {+ w$ n$ U$ H% D |
|