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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

sysbios hwi 问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-8-31 16:23:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好。使用GPIO中断时,中断能进入ISR,但是不能区分具体的GPIO端口。程序如下:
2 G# [, {; h! U3 n1 Z# l#define AD7606_PAR_BUSY_GPIO_BANK        54 A* }/ S- Z6 m: b! D+ Y  l
#define AD7606_PAR_BUSY_GPIO_BANK_INT        SYS_INT_GPIO_B5INT
. `' C/ _$ _0 r1 q9 Z0 i
# q: `- C/ m  Y3 ]6 i#define AD7606_PAR_BUSY_V1                        GPIO_TO_PIN(5, 11)   //BANK5的中断口5.11  _- q' E0 e- m# J+ E
#define AD7606_PAR_BUSY_V2                        GPIO_TO_PIN(5, 9)    //BANK5的中断口5.9
, ~- }- K( @5 K8 C$ D* C4 I# |  S#define AD7606_PAR_BUSY_C                        GPIO_TO_PIN(5, 5)    //BANK5的中断口5.5
) N. j/ V) L2 p) z! F0 s#define AD7606_PAR_BUSY                                GPIO_TO_PIN(5, 4)
4 \/ f/ Z& _: \4 p. }- e- p* U7 b+ ~4 \% c* D# G0 M8 s
#define AD7606_PAR_CONVST                        GPIO_TO_PIN(5, 1)
$ J! D  f* Z1 ?: Z. U% I/ r7 l9 _6 E#define AD7606_PAR_RD                                GPIO_TO_PIN(5, 2)
8 P. Q; i$ z# `* D#define AD7606_PAR_RESET                        GPIO_TO_PIN(5, 0)8 p: [$ I+ l) e$ c6 q" g- e1 t7 n0 q

8 z2 n* R; b7 ?3 y- t3 L9 Z9 m$ i6 d; u1 r. Q

1 I( C6 o, i& m/ J/ C9 c1 ]7 L# l+ mstatic void ad7606_irq_setup(ad7606 *ad) {
+ d, P& B3 ^- X3 O, {        Hwi_Params hwiParams;
& x, L$ J9 K2 z* R        Hwi_Handle myHwi;. U9 Q; T- Q5 I0 `, N
        Error_Block eb;# n- ?/ R2 a0 T6 U
! V$ I3 t- C7 h2 V( V2 a' _
        Error_init(&eb);. m0 F9 a# k6 v1 z: J6 m% b
        Hwi_Params_init(&hwiParams);
1 i0 W$ m9 k* u4 P5 \        hwiParams.arg = (unsigned int)ad;0 w1 s/ o4 c$ R& X+ V+ J& ^2 B$ L
        hwiParams.enableInt = FALSE;
  v/ z; y+ J' K6 b4 [5 A/ ^        hwiParams.eventId = SYS_INT_GPIO_B5INT;
* ^# P( t% ?6 ^9 ?/ ~4 x        hwiParams.priority = 4;1 t4 W! K8 F9 n% T1 ~* V# w
        myHwi = Hwi_create(8, ad7606_busy_hwi, &hwiParams, &eb);       //注册BANK5中断处理函数
8 `! a0 Z" X$ f0 x7 G        if (myHwi == NULL)
, z- H( _8 H, j7 B0 |& U        LOG_FATAL("failed to create hwi");# ]  N; v2 v& i

. R, C* i* g, w6 m8 q( ]        /* enable both interrupts */
7 g; t2 `( y5 J3 l: \6 s& u        Hwi_enableInterrupt(ad->irq_event);
3 y0 @. a/ x' Y8 W}
8 p' `' J- t) r& ^! S# E: B' O3 C, e1 c/ z: `- A7 U

8 Z) D  H8 z& @0 X* f3 v1 A4 ystatic void ad7606_gpio_pinmux_setup(ad7606 *ad) {
$ v  K. e% P8 H        volatile unsigned int savePinMux = 0;
& F0 ]5 O) d! z        //初始化5.11、5.9 、 5.5为GPIO口; }! W4 m  o( I( L* ?- a1 s
        savePinMux = HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(11)) & (~(SYSCFG_PINMUX11_PINMUX11_27_24 | SYSCFG_PINMUX11_PINMUX11_19_16));
# a$ i6 K! c3 ^' m, W& U, M8 J+ V# g9 e. Y
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(11)) =        (PINMUX11_BUSY_V1_ENABLE | PINMUX11_BUSY_V2_ENABLE | savePinMux);
' C0 A  ?( _8 s0 M1 L2 |3 m/ o* a# j9 \
        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));) K, Q8 k$ v. J5 S& c  K
" [0 z( i. Y* Z. p( P
        HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(12)) =        (PINMUX12_RESET_ENABLE | PINMUX12_CONVST_ENABLE | PINMUX12_RD_ENABLE | PINMUX12_BUSY_C_ENABLE | savePinMux);! t* s8 f. {9 k  J; _! j( p. }
3 t1 W- V& D$ E3 F1 n; S( a# \' ~
}" O) T2 ^1 p) q) d/ e
+ |& l  a9 S; F. N. F, X6 x/ c
. g! O7 C! r$ ?
static void ad7606_gpio_setup(ad7606 *ad) {5 A' Z& P, ]3 k
        /*Set the AD7606_PAR_BUSY to the input mode*/& f  y, }& H0 P* N: U2 s! R) L$ h. w
        //初始化5.11、5.9 、 5.5为中断口7 w* y3 s, r0 h+ y! y
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_DIR_INPUT);
( x$ K9 `# b0 q  |& L        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_DIR_INPUT);/ M  A3 ]7 g1 z7 R5 F
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_DIR_INPUT);
% q6 ?8 v1 [% ?0 A# `7 F        //GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_DIR_INPUT);
' c/ y0 o( x7 X        /*Set the AD7606_PAR_BUSY to the Falling Edge Interrupt*/
" ~1 ]3 F# I8 P# ?* N/ w/ ^        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1, GPIO_INT_TYPE_FALLEDGE);
! G$ j! L8 B2 Z3 _- c! l: s: P        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2, GPIO_INT_TYPE_FALLEDGE);
! {5 Q/ ]) b$ N0 v' Y5 u- R6 K        GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C, GPIO_INT_TYPE_FALLEDGE);& v& M+ a. ]8 s) p2 M" G$ X# T
        //GPIOIntTypeSet(SOC_GPIO_0_REGS, AD7606_PAR_BUSY, GPIO_INT_TYPE_FALLEDGE);% ]/ l' M8 g- c9 g: H
        /*The interrupt setting allows AD7606_PAR_BUSY_GPIO_BANK*/
! j+ M/ E* D) a; Q        GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);5 {6 J$ C7 N) x- ~* F

" I# d3 c) P4 _8 B* ~1 P        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_DIR_OUTPUT);  x! s* ~, B, T( S/ L, U
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_HIGH);% u) I. l/ k' r1 c
        Task_sleep(1000);
: J4 \4 q' d( _5 E" ]        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RESET, GPIO_PIN_LOW);
7 {( Z5 t" g( U% g        Task_sleep(1000);" q! ?3 ~1 a$ f" P: ~+ a! S
( P0 ?: D2 D. F7 U
        /*Set the AD7606_PAR_CONVST to output mode*/
0 J3 j! Y$ U3 ]5 j+ P" c8 ]4 `7 b- g0 ~9 ]        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_DIR_OUTPUT);9 y/ t* O- m( d" k3 O* V2 m
        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW);2 r0 O5 R% g  n3 [# f
. H( T% V* m' m
        GPIODirModeSet(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_DIR_OUTPUT);
9 B& N3 v% N! \5 p& J7 k$ l/ @        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_RD, GPIO_PIN_HIGH);! N9 S/ s9 t  E" ^* y
0 o- d# `& x! ~2 @  J* ~8 R
}9 i, m' j& q  T) V3 R0 c9 M

) l- b5 H6 P- `- K5 m. L6 h8 l- L
: a3 C. G/ M  m4 T& P% Astatic void ad7606_busy_hwi(UArg ad_addr) {
+ ]% s2 r% n/ C" X6 ]
: S1 Q- V4 P3 L$ K% w2 w$ u' h+ o! f  {7 ^
        /* Disable the interrupts for pins of bank AD7606_PAR_BUSY in GPIO.*/- t) A! g; G& k- `1 i5 Z7 N% P
        GPIOBankIntDisable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);      //用仿真器debug,发现程序能进入这里。
) b' J' w" P6 X; ?5 r; I- }/ z+ G( u, @' ^# x/ j/ H/ S0 y
        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1) == GPIO_INT_PEND)
/ ^# o6 C9 v/ {; L: N" I        {
; r5 x3 u6 l# ^+ S                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V1);                    //问题是:用仿真器debug,发现程序不能进入这里。% b+ s" j) C' b% {& n& O& h
                cs_addr = SOC_EMIFA_CS5_ADDR ;
; X# }) `) M- n+ J6 o1 P9 P                internal = 0 ;, y( y+ b& e: s: F& r3 o  x
                int_flag[0] = 1 ;
9 ^- U$ c4 P% [4 y        }
$ [6 g: ?0 [# D4 n1 A  z5 I        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2) == GPIO_INT_PEND)
( g% D( K$ |7 D( @$ o! N        {; B* J  s' D1 {: x  n! r* O
                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_V2); //问题是:用仿真器debug,发现程序不能进入这里。
5 I- I8 W# s9 _9 f* V                cs_addr = SOC_EMIFA_CS4_ADDR ;1 Q+ ]! @, Z4 _. ^( V
                internal = 6 ;
  e) y& |% k& X( e) h/ r# ~                int_flag[1] = 1 ;
  y6 t+ M4 |% R% |" E2 b- ]        }1 w5 G- f. u7 Q( b
        if(GPIOPinIntStatus(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C) == GPIO_INT_PEND)- N: J% T# k, m3 q) n
        {  U! |) o8 n& Z
                GPIOPinIntClear(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_C); //问题是:用仿真器debug,发现程序不能进入这里。- B; ^1 m8 i6 p6 N' o  c
                cs_addr = SOC_EMIFA_CS2_ADDR ;
& r8 b1 n, p3 h! O5 ~* O' M8 p                internal = 12 ;
' f9 l( L# b8 n, p. o                int_flag[2] = 1 ;
" E* y3 r1 A$ [& ]        }
- F  i* k3 w2 b2 G: e- W6 }" R, e  
* B) d& }: v$ `: j        GPIOPinWrite(SOC_GPIO_0_REGS, AD7606_PAR_CONVST, GPIO_PIN_LOW);! i, E8 `% y! T& u) ]5 V' Q) p" i
      
4 O' r1 T* s6 j2 j, w        GPIOBankIntEnable(SOC_GPIO_0_REGS, AD7606_PAR_BUSY_GPIO_BANK);: @- n$ r1 D8 y2 T1 Q
}
3 z3 y6 ]) C2 U* R( `. r* |. r/ ^  B0 a* y% b! W+ Y; P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
沙发
 楼主| 发表于 2016-8-31 16:53:50 | 只看该作者
INTSTAT45状态如图
( A5 R" ~; G4 \) c1 f% Z$ `4 G. w) d( K. |. x5 R7 b* p5 v1 p& U

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 05:08 , Processed in 0.101850 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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