|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:/ h. `7 b: ], _/ a3 ^& J$ f
//kEY GPIO set7 e% o& N9 q8 t7 `6 a+ U
GPIOBank0Pin1PinMuxSetup();
% c- c, X0 q, o9 W+ o GPIOBank0Pin2PinMuxSetup();' g# ~2 c' i& Y2 L9 s# `
GPIOBank6Pin8PinMuxSetup();% C6 c/ O+ H9 t# K0 }8 D
GPIOBank6Pin9PinMuxSetup();/ Y; T8 m" v0 g
GPIOBank6Pin10PinMuxSetup();
% |! P$ E- \2 Q9 C( ~$ ^, J GPIOBank6Pin11PinMuxSetup();
) A/ Y, F5 @, ?, u' l# J4 b GPIOBank8Pin12PinMuxSetup();
: g3 m' j" i" v7 N o) p% F GPIOBank8Pin14PinMuxSetup();5 e+ _. Z! y9 u# S" ~1 W
GPIOBank8Pin15PinMuxSetup();
7 d- ^( j) m" t& p1 G5 I
0 {6 {- v6 w0 a3 K* Y0 F+ Y. u8 C! z GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);9 s4 N5 t, M- u: W* S% c8 U
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);5 ^3 u! _# C, h
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);9 g8 w/ z$ U/ l9 r- I
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);; J2 y( k. {# c! u) T6 L
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
) w: q% w/ z) ]5 x GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
1 @/ { ]) J5 o* Z7 F& m5 i GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);# \4 ? l% P7 l- W$ d+ t
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
; Y+ M0 Z% R I6 k% W1 B# c2 u GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
7 Q$ {/ \7 f/ `. G6 Z3 n) c
7 m; \( t2 g& Y0 `; |1 P9 C$ L, |" v4 _4 D4 O
// 底板按键中断
# i' k7 m4 F+ ^ GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
3 ?. q& k! H g- [+ i: P0 X GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
+ t- \. ?4 c: z' e0 C# Y* G GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left. `2 J" p! ?+ ^3 `
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok+ j1 u/ d8 Z1 |; m6 [0 s
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down
( Q: `9 I, {$ g GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
/ a' @ ^5 f) j: Q! p3 P GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
* }, f# d( c( l GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
4 k. V! T& v6 s% a GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm* c4 ~1 {9 ?5 ]9 X
/ b3 N+ E( s- l // 使能 GPIO BANK 中断
4 M# O Y- V' W) H$ `9 g: k GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0" C' q+ s F0 _/ W8 l: ?5 N
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
' V/ n7 j" v( a9 U4 f3 f GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO87 g: A( R7 Q1 K
: j8 Y1 v0 k, D- f! T @
// 注册中断服务函数
P7 b& W+ P; k1 x: o IntRegister(C674X_MASK_INT6, USER0KEYIsr);
1 ] G( o; A. p7 \ IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);0 n0 z; v$ `5 m' g. f! a
IntEnable(C674X_MASK_INT6);2 D2 y* A, f1 k0 |# o
, C- i- C. |# `( ^5 J5 T IntRegister(C674X_MASK_INT7, USER1KEYIsr);
9 P% U Z: T' H IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
" S9 O% g# h' \, c IntEnable(C674X_MASK_INT7);: X' M) e x+ h9 l' \# J5 o
" T; {( J b {, I IntRegister(C674X_MASK_INT8, USER2KEYIsr);1 N& `/ D- N' N5 B% O
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);5 M: v5 e9 B4 o4 e2 Y- o
IntEnable(C674X_MASK_INT8);
5 a4 Q5 p& Z( O. o但是现在收不到中断,请问问题出在那里?谢谢" [0 O1 k5 S% j$ ]1 P
|
|