|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
# n* H7 {' E! a4 X //kEY GPIO set, C8 v% [4 a) p" g4 E
GPIOBank0Pin1PinMuxSetup();3 M0 f. w4 w: V8 _" q
GPIOBank0Pin2PinMuxSetup();) g8 e9 e8 p& s4 X: D
GPIOBank6Pin8PinMuxSetup();
9 k. G& H( s; d4 U0 `7 { GPIOBank6Pin9PinMuxSetup();# t' A( J" `5 d/ H+ M- }5 a! O
GPIOBank6Pin10PinMuxSetup();
2 w8 ^; M; }3 M6 ` GPIOBank6Pin11PinMuxSetup();" U' j- G- y3 c2 k8 s
GPIOBank8Pin12PinMuxSetup();
9 S$ B* E' ?) {9 W GPIOBank8Pin14PinMuxSetup();
! c5 W% }: W/ b* h( Q2 _ K GPIOBank8Pin15PinMuxSetup();
9 x% u Q9 i# f# n
2 I& c9 h/ u7 [% ]7 H. L0 A1 ~0 v; W GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);0 B3 z1 U! N1 z& D: b; ]
GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);! b1 [: U0 Y- d
GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
( m/ v/ T( S- w( l! `( E3 ` }5 D GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
6 ~; b% _9 u. K! [9 r/ h$ U GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);9 v$ g: `& `6 R
GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);: N6 h$ A' W3 b& t7 P, F( n
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);" w5 r5 |4 S$ j( P" f
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);) L0 N3 q+ e) ~( U
GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);- I4 G! P8 X$ ~" u+ L7 N7 i
3 W) l" K/ A# A$ E
' ?1 V# A$ |( @' A4 M // 底板按键中断* g- J, m c" h0 h3 _8 [! f
GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none' u8 m- W- U0 x, q6 Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none! P" y; H3 Y( {2 D# b: G) Z
GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
$ {0 V! ]8 C+ C$ N% } GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok. W8 r+ u h& ^; X1 j
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down; v% i$ X( U: N" {9 C# X+ ]: b
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
/ t! ^1 O& b: V% d, u# z! h GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
+ J; `) I% v, q GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
" c$ J5 P. b* N GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm5 M2 F+ A5 G5 r7 c& B' L- I
& S+ T' g! |, H( f3 Q
// 使能 GPIO BANK 中断
1 f, e' I& I" N" D* Z* N0 i+ P GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0# q: E6 @+ m& I- I/ c- o8 y
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6
6 Q' V6 s) r2 [; E" ` GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
4 s+ B* ]6 M/ u% X9 \" R1 |) |, Z9 X# q7 O( P7 Q( V0 N7 `" _- X
// 注册中断服务函数
* E4 h& u p' Z IntRegister(C674X_MASK_INT6, USER0KEYIsr);$ J4 o) O( y, c6 ?; h
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);7 [+ E4 I" c0 o1 I! ?/ p
IntEnable(C674X_MASK_INT6);5 g9 C3 M6 P5 K. l6 K: k4 U
( a& t0 K0 w6 U7 w h
IntRegister(C674X_MASK_INT7, USER1KEYIsr);
( N; m- x: @6 i, q9 N) w. y. }# { IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
* V+ s& ?! z6 T6 N/ X IntEnable(C674X_MASK_INT7);2 f; }- r: {9 y; T/ ?8 j, ^
& z) x4 P5 \: p; V- \
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
# n/ M2 g u7 C/ b+ I7 z+ G; G IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);
' l( w# V% h# C9 H) z" m IntEnable(C674X_MASK_INT8);" v- T8 X* T. w: w
但是现在收不到中断,请问问题出在那里?谢谢
7 N0 L7 m p4 M* q& o |
|