sysbios hwi 问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5735|回复: 1
打印 上一主题 下一主题

sysbios hwi 问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-8-31 16:23:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好。使用GPIO中断时,中断能进入ISR,但是不能区分具体的GPIO端口。程序如下:: V* H' O$ |/ s
#define AD7606_PAR_BUSY_GPIO_BANK        5, X$ {8 L- j% t
#define AD7606_PAR_BUSY_GPIO_BANK_INT        SYS_INT_GPIO_B5INT( s) i2 y8 a. x! f$ m8 y! I
. T) A& [" Q$ r: J
#define AD7606_PAR_BUSY_V1                        GPIO_TO_PIN(5, 11)   //BANK5的中断口5.114 R6 W: B& g/ E$ \/ r4 e6 `9 l: j& r, v
#define AD7606_PAR_BUSY_V2                        GPIO_TO_PIN(5, 9)    //BANK5的中断口5.9
5 |/ C* K' q5 x+ B) b#define AD7606_PAR_BUSY_C                        GPIO_TO_PIN(5, 5)    //BANK5的中断口5.5
! z! r& R" a6 c2 c#define AD7606_PAR_BUSY                                GPIO_TO_PIN(5, 4)$ p. D9 n" g$ I& {* I% ^

" e3 C5 Z4 J3 ^% b8 S#define AD7606_PAR_CONVST                        GPIO_TO_PIN(5, 1)  Z, A( V2 T& b, b9 A& u  t0 r% U
#define AD7606_PAR_RD                                GPIO_TO_PIN(5, 2)9 n* k7 o- o" g
#define AD7606_PAR_RESET                        GPIO_TO_PIN(5, 0)
- w( a5 w  i* D2 m7 v; G( `) Q( o5 E9 z; i, r

: P1 _- ?. A0 \# w! K8 x( C( D5 S9 a4 A* n% u8 O8 ^
static void ad7606_irq_setup(ad7606 *ad) {
5 Y# L3 x8 I/ R) ?) k& l6 E2 p        Hwi_Params hwiParams;6 n8 Q  Y& X, }( Y
        Hwi_Handle myHwi;
0 v& ^) O# j) C; H3 V5 x        Error_Block eb;, U% G8 {4 X+ ~/ d
* X  p1 @2 h3 V# ]
        Error_init(&eb);
9 F8 k5 b5 ]' k4 T        Hwi_Params_init(&hwiParams);/ {5 C( D1 s6 _) _- T, Y6 J
        hwiParams.arg = (unsigned int)ad;
9 z1 v% t: [2 k2 N        hwiParams.enableInt = FALSE;/ N& S8 `$ I% x/ W8 f
        hwiParams.eventId = SYS_INT_GPIO_B5INT;9 R: t! X' e* G
        hwiParams.priority = 4;- {9 l  N* `. Y" P$ p1 X% S' k. h
        myHwi = Hwi_create(8, ad7606_busy_hwi, &hwiParams, &eb);       //注册BANK5中断处理函数: a/ [* B2 u2 n% ^/ F. Y) Z
        if (myHwi == NULL) ( s- p$ o& D# ~4 y
        LOG_FATAL("failed to create hwi");
; L# [7 G$ x1 N
5 A6 O2 B: p) O( g& ~5 B        /* enable both interrupts */4 }% P, g8 w- p+ I6 L9 s+ \
        Hwi_enableInterrupt(ad->irq_event);
" t% C0 w, w. [% C1 V6 o}! Y# w7 l9 [; ?+ X) ]

$ P& A% w+ x' E
6 ^! N! j6 {6 n# Z- M+ d9 _% U" Q; Dstatic void ad7606_gpio_pinmux_setup(ad7606 *ad) {
$ g2 @& W7 @$ W3 w, X7 [+ C        volatile unsigned int savePinMux = 0;
$ m' d6 D9 B, q( W5 R6 H        //初始化5.11、5.9 、 5.5为GPIO口8 N8 q  ?5 A, i/ K# [- w
        savePinMux = HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(11)) & (~(SYSCFG_PINMUX11_PINMUX11_27_24 | SYSCFG_PINMUX11_PINMUX11_19_16));
6 v8 {" W$ Y# O* l. e% f' |* ]! F, t. l0 z8 m3 `+ d
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(11)) =        (PINMUX11_BUSY_V1_ENABLE | PINMUX11_BUSY_V2_ENABLE | savePinMux);
2 _0 t; D; ~+ @( U8 n/ M
" V" |3 m4 Q) ]/ M& ?0 J        savePinMux = HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(12)) & (~(SYSCFG_PINMUX12_PINMUX12_31_28 | SYSCFG_PINMUX12_PINMUX12_27_24 | SYSCFG_PINMUX12_PINMUX12_23_20 | SYSCFG_PINMUX12_PINMUX12_11_8));+ }1 W) E3 q3 z, h6 v" V8 {9 e

% `  x3 f  s/ q! O! \$ |! Y        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(12)) =        (PINMUX12_RESET_ENABLE | PINMUX12_CONVST_ENABLE | PINMUX12_RD_ENABLE | PINMUX12_BUSY_C_ENABLE | savePinMux);
% k" z: j. w5 ^% O6 w
4 _4 g3 w* L3 ]4 H4 a}  |6 P8 o+ i% |. e& O) c

( S/ S% z& {  f6 i  r+ |/ p4 P; D1 B8 b
static void ad7606_gpio_setup(ad7606 *ad) {
7 Z4 R) f. A. C  Z        /*Set the AD7606_PAR_BUSY to the input mode*/
# O5 W, z3 H9 k4 d5 d! H+ B* B        //初始化5.11、5.9 、 5.5为中断口7 Z2 O! o! P7 t8 P  G6 e, v
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_DIR_INPUT);+ Q# l" d( ~- p1 V1 M
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_DIR_INPUT);6 l7 @8 c# [8 K% ^
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_DIR_INPUT);
6 V* ^7 D* d3 w7 l* V# L3 I  X        //GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_DIR_INPUT);
! A3 {3 ], n) S. a4 z        /*Set the AD7606_PAR_BUSY to the Falling Edge Interrupt*/2 @5 s: F6 a/ N/ ~5 O* r- x7 y$ R8 u
        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_INT_TYPE_FALLEDGE);
/ r" R2 E5 a, _        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_INT_TYPE_FALLEDGE);. e# D) U* _* S% }: \- K
        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_INT_TYPE_FALLEDGE);% A, n1 B6 E3 j1 z, O% v
        //GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_INT_TYPE_FALLEDGE);7 X7 s# ]- n$ Y# g
        /*The interrupt setting allows AD7606_PAR_BUSY_GPIO_BANK*/7 f1 b% y1 ~. M2 h4 u
        GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);
3 u5 a5 b0 w, s, y
# f/ f8 w/ M; s# g        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_DIR_OUTPUT);, p4 E* W7 ~/ ?( _
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_HIGH);) {4 m8 D5 B7 L1 f7 h# z* V/ n
        Task_sleep(1000);# ^5 r5 D7 T6 C7 W) C5 Q2 D
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_LOW);
9 ?+ d8 z+ z& s6 A# S: A        Task_sleep(1000);) B! P3 m. V$ }. ^

- P6 {, t* }/ S        /*Set the AD7606_PAR_CONVST to output mode*/4 c" ]% ^( |$ y
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_DIR_OUTPUT);) w. M$ L& n+ l% E5 ]- E
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW);8 J$ X* j( J" X! m0 j( l- Y2 L

# o+ o2 f! O0 z* i, j, j2 H& M1 L& F3 Z        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_DIR_OUTPUT);
# c% I. {7 P7 x& t% J- X3 F1 j" O; H        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_PIN_HIGH);4 k1 I: S! f$ X. F$ H1 S
( ~  e% ?6 @# J3 o
}
" T$ G" u' t6 T
8 w* C: k  f' [' w0 P3 K( g6 ^9 s  j& N" o( N2 a& V
static void ad7606_busy_hwi(UArg ad_addr) {
+ I. g0 c3 }/ ^0 s
( B# }/ T& l- n$ I
5 V8 l6 V9 N' P        /* Disable the interrupts for pins of bank AD7606_PAR_BUSY in GPIO.*/2 [! b! O/ T' v
        GPIOBankIntDisable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);      //用仿真器debug,发现程序能进入这里。8 A' y3 i. v$ `6 J' ^
  K0 ~0 B8 t( F1 m; L# g9 M* h
        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1) == GPIO_INT_PEND)
& \' J5 G) |* q: [        {4 {  L) j8 Q. I& @
                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1);                    //问题是:用仿真器debug,发现程序不能进入这里。
+ T; ~) x8 x( w5 ]& Z                cs_addr = SOC_EMIFA_CS5_ADDR ;
, u3 |! L  G+ w8 V                internal = 0 ;9 A' T6 V- K* {3 ?4 |/ z
                int_flag[0] = 1 ;
6 h( {9 n0 q( U7 }, a        }8 N7 u; |2 H% l- I! F# A
        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2) == GPIO_INT_PEND)
2 `$ X9 D) m5 v, H        {- S4 q% q* n& n/ o% Q, N5 E; {
                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2); //问题是:用仿真器debug,发现程序不能进入这里。
9 W* a! p% w6 g( u2 h0 Q; r! ~2 s                cs_addr = SOC_EMIFA_CS4_ADDR ;8 R2 b) D/ T7 n. ~7 J( o* x
                internal = 6 ;7 ^, X3 r! ^* a. W. @$ o8 B
                int_flag[1] = 1 ;+ A) p/ d  \3 X$ _
        }; e0 F1 E3 ]/ a/ [# T
        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C) == GPIO_INT_PEND)
0 U. K9 A; |0 M        {; Y7 R& f: i  `/ O, H* @6 d
                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C); //问题是:用仿真器debug,发现程序不能进入这里。
# T6 p/ ]1 e- @, a                cs_addr = SOC_EMIFA_CS2_ADDR ;' U( t- d3 D- s$ O* V. ]" G
                internal = 12 ;
; z( Z2 \1 b+ H1 o# w: w- {! p                int_flag[2] = 1 ;
+ M, g& s' J3 S, ?4 V- s$ l0 Y        }9 D7 \! w# m1 N
  . s4 F1 i" [2 I; a- g$ L
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW);
1 `: v9 `0 c  k7 h- U       ) P) w: h, Z8 i2 R7 H
        GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);9 @9 G4 x, t* l1 B5 h
}
( r$ q6 G5 K  L# Q* t
1 A9 [& O, O4 k% F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
沙发
 楼主| 发表于 2016-8-31 16:53:50 | 只看该作者
INTSTAT45状态如图
. B# V6 ^! N1 r2 z' Q7 |
, h  `1 w" P5 m: x$ A

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-3-17 12:43 , Processed in 0.047108 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表