|
|
我现在有8个按键,分别在GPIOBANK0,6,8,现在我想将这几个bank中断映射到INT6,7,8,可以这么做吗?还是只能映射到中断4或者5?我现在实现代码如下:! H D7 K q% a3 H0 e
//kEY GPIO set
, X& Y' U; t; l& U) c+ R0 k- m GPIOBank0Pin1PinMuxSetup();: }* o& o# G0 m
GPIOBank0Pin2PinMuxSetup();
/ x5 `2 s& \. P: N" R GPIOBank6Pin8PinMuxSetup();
2 p. s7 M# R- j7 ~ ^0 v( D$ r* W: v0 S GPIOBank6Pin9PinMuxSetup();
% q* G; K: F% { G GPIOBank6Pin10PinMuxSetup();8 K3 B8 n; @( x; o/ p
GPIOBank6Pin11PinMuxSetup();
\' r r2 A* Q# T! {% D9 A GPIOBank8Pin12PinMuxSetup();
; U/ F8 S" V* e6 V4 ^3 |* h' } GPIOBank8Pin14PinMuxSetup();6 O% O, o) U- N$ L% u# `7 J
GPIOBank8Pin15PinMuxSetup();: D$ Y& F$ y. r( w
, k+ N8 e+ H& C
GPIODirModeSet(SOC_GPIO_0_REGS, 2, GPIO_DIR_INPUT);
& a0 }# b! r$ ?! m) E GPIODirModeSet(SOC_GPIO_0_REGS, 3, GPIO_DIR_INPUT);
V7 L+ _( j/ Z* D0 P$ | GPIODirModeSet(SOC_GPIO_0_REGS, 105, GPIO_DIR_INPUT);
6 k& v+ a! Y8 V; V2 M GPIODirModeSet(SOC_GPIO_0_REGS, 106, GPIO_DIR_INPUT);
* [+ w0 F9 V( h' B GPIODirModeSet(SOC_GPIO_0_REGS, 107, GPIO_DIR_INPUT);
% z; x4 ]) Y, i GPIODirModeSet(SOC_GPIO_0_REGS, 108, GPIO_DIR_INPUT);
( O; W0 \. P1 E GPIODirModeSet(SOC_GPIO_0_REGS, 141, GPIO_DIR_INPUT);
9 _2 Q. |6 B g GPIODirModeSet(SOC_GPIO_0_REGS, 143, GPIO_DIR_INPUT);
; r3 ^9 v- e3 |9 |/ i% v+ Y B GPIODirModeSet(SOC_GPIO_0_REGS, 144, GPIO_DIR_INPUT);
0 R/ p4 i9 R2 d0 j' g# p% }0 X
. \8 E6 f& C6 Q4 z. Z8 O0 [- P7 Q, b
// 底板按键中断
& O# O- Z ?$ u; e, A: d* O GPIOIntTypeSet(SOC_GPIO_0_REGS, 2, GPIO_INT_TYPE_FALLEDGE);//key none
3 A; {" r$ C+ T, D GPIOIntTypeSet(SOC_GPIO_0_REGS, 3, GPIO_INT_TYPE_FALLEDGE);//key none
( G* i* H5 P: v; A$ K/ {1 i GPIOIntTypeSet(SOC_GPIO_0_REGS, 105, GPIO_INT_TYPE_FALLEDGE);//key left
' w7 n1 X, L$ I7 c# R8 N- e GPIOIntTypeSet(SOC_GPIO_0_REGS, 106, GPIO_INT_TYPE_FALLEDGE);//key ok3 }4 v3 t$ s% {, O
GPIOIntTypeSet(SOC_GPIO_0_REGS, 107, GPIO_INT_TYPE_FALLEDGE);//key down' I1 j; `8 v4 r7 m; I& F/ H
GPIOIntTypeSet(SOC_GPIO_0_REGS, 108, GPIO_INT_TYPE_FALLEDGE);//key right
5 I1 O% M( M; e. p+ [; ^; `. p) l GPIOIntTypeSet(SOC_GPIO_0_REGS, 141, GPIO_INT_TYPE_FALLEDGE);//key up# \) i/ q# F5 Z) {
GPIOIntTypeSet(SOC_GPIO_0_REGS, 143, GPIO_INT_TYPE_FALLEDGE);//key cancel# }4 i* t& C/ O9 c
GPIOIntTypeSet(SOC_GPIO_0_REGS, 144, GPIO_INT_TYPE_FALLEDGE);//key confirm
, c- U+ J1 }! }- t9 r" m8 G L) L: h2 P) @. w; Z3 S3 \8 ^
// 使能 GPIO BANK 中断 s* a* H6 o. I- D& n
GPIOBankIntEnable(SOC_GPIO_0_REGS, 0); //GPIO0, ?8 B- f: B% x5 ?# h
GPIOBankIntEnable(SOC_GPIO_0_REGS, 6); //GPIO6; U) D' U8 q3 |+ x2 @; Y6 z
GPIOBankIntEnable(SOC_GPIO_0_REGS, 8); //GPIO8
/ N" _ V5 N/ S$ \" T$ Q0 }% P0 ^1 g$ ?6 e6 H3 p% _
// 注册中断服务函数" }, [6 K0 |* W; @8 j- w- X3 B
IntRegister(C674X_MASK_INT6, USER0KEYIsr);$ k% F/ e+ u* ~/ `0 Z
IntEventMap(C674X_MASK_INT6, SYS_INT_GPIO_B0INT);, p/ j) t+ ~5 } n. c) r9 W, \
IntEnable(C674X_MASK_INT6);9 F/ d* K7 |4 @. z# c( b& f$ K
; K2 X( b5 g- S: q" t0 ~8 o4 d0 p IntRegister(C674X_MASK_INT7, USER1KEYIsr);
/ t' p) T! F0 z5 q' ^ IntEventMap(C674X_MASK_INT7, SYS_INT_GPIO_B6INT);
) r! U1 ~3 X; x5 V IntEnable(C674X_MASK_INT7);; `: q" n j& H; W* c' n8 E+ S- p
w: H. m) x1 e+ ~$ L
IntRegister(C674X_MASK_INT8, USER2KEYIsr);
" v0 {# [3 t% u, J; o& a" G$ E IntEventMap(C674X_MASK_INT8, SYS_INT_GPIO_B8INT);: n- w: S$ [4 l9 q
IntEnable(C674X_MASK_INT8);
% P% [- }* D3 K! {) \但是现在收不到中断,请问问题出在那里?谢谢 P. @5 y5 X, x) o) A
|
|