|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:2 G8 W, Z* o0 g. q$ V0 @7 _
//kEY GPIO set
, v$ G7 I5 F0 D5 H M GPIOBank0Pin1PinMuxSetup();
% ~+ m5 _7 P$ J6 p8 v GPIOBank0Pin2PinMuxSetup();( r9 r. @( W! l$ m( I0 {$ M* p0 c
GPIOBank6Pin8PinMuxSetup();4 Q' J2 [: G1 n' E; l
GPIOBank6Pin9PinMuxSetup();
, |% n# r& v g! `$ e3 T( b. w- g9 | GPIOBank6Pin10PinMuxSetup();
4 F2 r m- a: c GPIOBank6Pin11PinMuxSetup();5 @* h+ N% H" ^3 G* K& k. F, @* z
GPIOBank8Pin12PinMuxSetup();
- A, P: C4 E3 b* K! D GPIOBank8Pin14PinMuxSetup();5 E: [9 L9 s; c) f. w! g& R5 _1 k
GPIOBank8Pin15PinMuxSetup();
2 f5 e% b4 d: |5 q' p p
( f* d% S0 }; w9 S3 a GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
1 ?, o7 b$ j- C" G1 n& A GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
* a8 P/ _8 `% K3 I8 \1 u" ? GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
+ B4 [! f2 ]( b9 Y GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
- ~/ l: m9 E; {' M; k; B( w, x GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);/ G7 J( ]2 F3 d' ^ k( [3 r5 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);1 C* B* O% `/ O+ M% G
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
# d, V" x- f% z1 G! K9 Q GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);* G0 }) \2 m- O- x; y
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
0 Q' k6 k |9 ~8 w& e( f$ d: r4 W+ h; N8 Q: l) c
5 b$ r/ R: g1 w) I# q
// 底板按键中断7 Q& i; Z: n4 f* ~- ?# x
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
; l, v0 i$ ?- S. B GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none1 ]( i/ y) P# z/ y: p# w
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
( k, t- Y( r( J( z GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok% R9 ?6 I0 T4 k6 T9 ]& V' |" H
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down& K2 S8 b! y( A, g
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right: G$ ? {5 d( e" o$ M6 ]5 t
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up# J2 S; V7 F: x x, R1 V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel! p# o) s: A7 _7 v# k
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
3 R K" w% z% n9 M, B
+ ^" L) O9 |1 x: b8 _$ }; B // 使能 GPIO BANK 中断' Y$ A: W, r! N9 ]; l0 A, f+ R. P* b, V
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0, e+ N" \* G A# g) K3 k x: O
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6( w# W: _7 Q* E6 y' I* k# P
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
) X3 o% ^0 k1 f0 f! _
1 E; w& @% l( n: x' U [3 M // 注册中断服务函数
C* G `- v! z IntRegister(C674X_MASK_INT6, USER0KEYIsr);
" W/ f# C( T, Q1 `" E- u IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
9 i/ v" B. u F- N$ N; A IntEnable(C674X_MASK_INT6);
+ _! A/ m$ U* a0 Y2 Q3 q' y2 N' F( w- `! V9 K3 e/ |
IntRegister(C674X_MASK_INT7, USER1KEYIsr);2 L6 ]9 `% P/ ?1 {! ~4 T
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);9 F& O4 t @9 m' U! S& f
IntEnable(C674X_MASK_INT7);
^5 w0 K- U8 G) g, M4 G$ m6 `9 ?+ c/ j
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
" ]0 G/ S4 g8 ?! W# o) ~ IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);! Z0 ]0 g1 e6 d, `7 d( J
IntEnable(C674X_MASK_INT8);
9 c! a4 N; j o- j但是现在收不到中断,请问问题出在那里?谢谢
! {) ` q& F% }* _* t |
|