|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
2 e0 A& d/ l- M( C$ o! ] //kEY GPIO set0 z" S: W, F! W7 ]( `8 F+ g
GPIOBank0Pin1PinMuxSetup();
3 D7 ? W2 o& S8 t ]6 ~ GPIOBank0Pin2PinMuxSetup();
# w% s: n5 y4 M1 |0 r W GPIOBank6Pin8PinMuxSetup();' K3 @! A1 }' n, u) O/ m
GPIOBank6Pin9PinMuxSetup();8 l9 @5 y7 P& m3 [
GPIOBank6Pin10PinMuxSetup();' Q$ ~0 k, \2 i. a( H- C
GPIOBank6Pin11PinMuxSetup();
6 z' y+ v$ g V, O GPIOBank8Pin12PinMuxSetup();" z( u" w$ F, [; ?7 F4 h
GPIOBank8Pin14PinMuxSetup();) Q% f% G2 k8 f! X1 |' V$ a5 t
GPIOBank8Pin15PinMuxSetup();; Y4 ^$ P0 |& R" X5 a8 Q1 L
: h0 V$ Z9 D; M" s GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
4 j4 ]# B( O% C; N# d8 ~8 I GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);. v6 v! M. P$ E9 g& w
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
/ }! M9 {; @! s T& c9 k* S& W$ y GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);: i- o6 `* A: J. s3 }# m3 f
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
2 b8 w: F3 A8 h: p% A. _ GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
% P; h* |; G" ] K2 P4 @! f( b6 I GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
8 M+ e" Z4 b$ z) x GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);2 n/ G/ P$ a" Q7 b4 V/ {
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);5 T% `- }- L2 F) G$ Z Q) G
0 c- C% o2 ` S, ^" ~. e
k1 Q/ d, J3 V# [
// 底板按键中断( }/ R! K9 E+ n: Y3 C
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none: Q% m% v. T, L3 v/ c
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
: ?; q- Y% }* `6 g4 N GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left/ T0 B# j) k! c3 U% q1 v+ x {
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
+ V- q. v3 n$ m! b4 s4 z2 c GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down3 g; Z- a4 ^7 w+ X* |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right* O6 Q; E, k' L& V1 Z3 }1 h5 f8 K8 w: m
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up0 V, X% h! P; H8 ]$ ]7 Q- f6 p
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
- B9 \4 w; u1 O- e- @0 P GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm, r$ v3 c- L4 T! A+ h! X3 m, H
+ R; C( T1 l& {2 k! C
// 使能 GPIO BANK 中断: r: D) X% X/ `' t7 k" R& G8 [# E& `' F
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO06 g( x( G, x9 o
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
& X* V& t) f+ [5 v5 M$ I$ t% e GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
- H& F' J0 U' l5 m9 V
) ]# \* o. ], Z# D% v5 e) c // 注册中断服务函数# V6 u/ [* y, R) I" T
IntRegister(C674X_MASK_INT6, USER0KEYIsr);
+ I6 J: P4 {1 K' A IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);. S- V6 V4 S1 P" c2 B% I
IntEnable(C674X_MASK_INT6);
" h3 F; {2 ]2 ~; v
! G' w+ A( n4 k+ X+ d8 z IntRegister(C674X_MASK_INT7, USER1KEYIsr);
% I0 Z; z/ n2 ^ IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
" Z+ N+ y- s8 F, _ IntEnable(C674X_MASK_INT7);
. O1 l) ^! Y" h& P! k; C# H6 d4 l/ f) I
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
7 I+ s7 E3 x" A. \$ q7 S IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);7 q+ r3 f+ t; _" U f" g; E* F, m
IntEnable(C674X_MASK_INT8);3 n% T% I* B; H" p6 }5 V
但是现在收不到中断,请问问题出在那里?谢谢
5 Y$ Y% M% U! W0 }. `8 Q |
|