|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
, |( F; ~5 b6 c9 v; Z% \4 V //kEY GPIO set6 z4 i r1 k; W7 O# O- g, ^# r- {( I
GPIOBank0Pin1PinMuxSetup();' S, m; @6 i' c
GPIOBank0Pin2PinMuxSetup();$ d- `( o6 g* ^9 O
GPIOBank6Pin8PinMuxSetup();. @4 M ~* |( {) f/ S
GPIOBank6Pin9PinMuxSetup();) b" k. f& J6 q: q2 N6 I
GPIOBank6Pin10PinMuxSetup();
. U- p, I- {6 |4 O) a: U+ t GPIOBank6Pin11PinMuxSetup();4 @2 X: i! h. n& v; @
GPIOBank8Pin12PinMuxSetup();
- ~( j2 n) p4 H; t GPIOBank8Pin14PinMuxSetup();. n# Q M7 \: T# t7 i5 G$ t$ F
GPIOBank8Pin15PinMuxSetup();! B. }+ f5 i% Z V- f4 }/ D; }
5 n( X5 q! M9 }
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);, w3 a# A5 I0 _9 k. M
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
4 q! J; n5 W' k& c3 w# w GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
1 [* b3 m9 Z4 Y: T4 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);% W9 y. I6 Z# q; B8 P3 K
GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);9 b) f0 t# Z c
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);; I9 a1 u, J- I' O5 h4 R* }
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);9 T" w# C2 W6 J, Y" m) c& ^$ ^, V. @' f
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);* o0 X2 _& I# b9 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);. {2 J( A. ?6 \
( b+ s+ K- N7 \
5 U4 U7 u. @* K5 ?
// 底板按键中断3 G v6 V7 A5 L/ |
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none' h- y1 ^' ~7 S% K, c
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
9 z6 [+ f# @1 s% c' u GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left! q3 p" k$ R/ N( ]1 s+ W' J" l$ E( I# o! j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok
& N5 x1 D9 v* b2 N! h1 s/ U GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down3 g' ~. O8 ~9 F# l4 m
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
0 e1 d9 X0 U; Q& k GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up% R! J" }+ ^8 H" i
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
7 N& \5 D0 R! Z GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm7 B, W7 E( [' d+ }2 L. q
; q9 E b; l. }- ^8 i& i
// 使能 GPIO BANK 中断
, p2 E1 u9 X) \( E2 O& k GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
5 a% N1 ~# ?* L- a GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO61 [3 X& G; `& B r. }
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
! f: f. B0 S7 Z9 n7 T- t* Y5 B! V8 M1 k
5 j7 A. i8 S1 m& G% h // 注册中断服务函数# a7 E0 N' h7 ], c$ k
IntRegister(C674X_MASK_INT6, USER0KEYIsr);' V+ _* N( B& W- V b! B1 U* \
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
: [3 L' m1 A- `' V( ^ IntEnable(C674X_MASK_INT6);* c9 K- Q. L4 C0 U
) i: y% G& c) c8 ?" l
IntRegister(C674X_MASK_INT7, USER1KEYIsr);) Z; B6 w ^/ N/ W& G1 F5 e2 B
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);6 c* U2 [, K5 H7 f- r6 a( ~2 m
IntEnable(C674X_MASK_INT7);2 \6 s8 W: b6 f/ F
- s# `5 q5 n# }: d IntRegister(C674X_MASK_INT8, USER2KEYIsr);
3 n+ `+ Q& X. X* `$ j1 c$ A/ r, u IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
5 i2 H' Y, J' o+ a* _ IntEnable(C674X_MASK_INT8);
, I- t: }0 t3 B' w但是现在收不到中断,请问问题出在那里?谢谢
" t1 y0 D/ q: ^; j: V4 u+ w |
|