|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:
' G/ S( P) Z2 q1 R, ` //kEY GPIO set
- S& Z9 J1 p* p. G0 n GPIOBank0Pin1PinMuxSetup();* g- D! i/ b" H
GPIOBank0Pin2PinMuxSetup();) e1 R& [; G1 `
GPIOBank6Pin8PinMuxSetup();
0 P) P& J6 W. O, _" z GPIOBank6Pin9PinMuxSetup();
: c S% x* a7 D/ i GPIOBank6Pin10PinMuxSetup();
( T; I* B, u4 r6 C& q+ t$ Z GPIOBank6Pin11PinMuxSetup();
( Q4 ]' o P, M; e# y& I GPIOBank8Pin12PinMuxSetup();/ s3 y% ~* c# U
GPIOBank8Pin14PinMuxSetup();# K) Q9 i |! z
GPIOBank8Pin15PinMuxSetup();
- a& j: D: M( e9 x0 u
1 r4 u8 V' j# `' l& v3 ^; y GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
5 B8 ?+ I9 m" x# f8 R& F9 y GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
& p0 B- Q& F" v n' R GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);% n" F( H* S$ d7 F8 R; |# t7 e
GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
5 f" ]' r3 r Z8 e. H2 { GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
/ l; ] E/ {% C2 U9 m* ~ GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);3 t+ L' q) P0 R
GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);; g# v1 p( W: z- L
GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
+ \- x! b& W6 ~- ]2 e/ n GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
( [4 m8 f7 ?! s6 H- U! j4 O$ E/ m: U
+ l# X8 G, t! }6 J+ E9 `" n# u/ ^
9 f( K0 [, j2 |5 a" C. F' k // 底板按键中断
" X$ |2 W9 l. K Z" e GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none8 w4 f7 U9 f7 n! R
GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
; F( U8 Q* N& F GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left, A/ P. ^2 K5 I. J- B. P
GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok$ {, z) N% a v$ P
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down" o' K4 x: q2 ]! U
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right& V* S$ Q `. p( W) V
GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up
) z3 G; s( G" U" `% \ GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel
8 M& c" `( Q5 u$ k$ F GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm0 m" z y2 s% O7 M
/ ~& T6 _0 \& E! U+ x // 使能 GPIO BANK 中断
5 p- x, e5 T/ A& i& V! \ GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0
: ?- [( E+ x. ?7 N GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6- `) g5 S! a \! f4 [( U
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
/ x$ c b2 _1 L L5 w
/ P& I2 ~1 F6 y7 T3 w3 ` // 注册中断服务函数
6 T8 x" w8 B6 l; h8 n/ V0 G IntRegister(C674X_MASK_INT6, USER0KEYIsr);
' r( \" h* m& v$ M' j9 B; p% T IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);
8 D- {8 s& V( h0 P) j2 G, v IntEnable(C674X_MASK_INT6);# [2 X% w; U, l# w" c+ V: N
9 Z- c2 {4 b( y5 j y IntRegister(C674X_MASK_INT7, USER1KEYIsr);! R0 ~, y- ]( |; j; I3 I/ o
IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);/ k- k- O6 u% Y$ K
IntEnable(C674X_MASK_INT7);
2 Y0 R6 [% ?& S2 t% u) q; H8 F
& f! Z j/ k! X* W IntRegister(C674X_MASK_INT8, USER2KEYIsr);9 _" m9 Q$ O7 D, k0 o, f) t8 R2 e. W
IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);4 f( ^' s; I( h* M- _
IntEnable(C674X_MASK_INT8);5 {! l* i- | l, q1 }
但是现在收不到中断,请问问题出在那里?谢谢
, Q8 r3 h. K1 p$ a% X |
|