嵌入式开发者社区

标题: 关于定时器问题 [打印本页]

作者: vtinf    时间: 2016-11-15 15:17
标题: 关于定时器问题
您好:; T" o2 }. D5 U$ u# E% G5 h
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?4 w8 t3 w: n% t* i6 _) X0 X1 I" ~. `

) t! @7 M' o- X% I. V3 x; n# Y- J5 W- X! a

4 B3 W* [8 G. \4 ~* B: u6 O: j' X9 Y& R2 S6 h0 {9 A! k

3 ~. C* D+ t6 E) X' l( y1 mvoid ad7606_start(ad7606 *ad, unsigned int rate) {
& t  F, E8 O1 V  P5 ~//    ASSERT(ad);
6 y' f2 D: }* d: k- v9 Q# g7 B//    if (rate > 1000000 / TICK_PERIOD) {
. R# M  `; h1 ~2 A//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
' L' n2 w  `+ Z2 [9 q//        rate = 1000000 / TICK_PERIOD;3 f+ Y  U  V* f7 c% Z5 D" t7 M
//    }
0 R& z; b0 B; ^/ k6 E//1 |1 w5 Z( L4 f9 q
//
6 O# L6 }) H5 h& u//    int period = 1000000 / TICK_PERIOD / rate;+ l3 s, ~0 g5 U# Y6 E: X; f
//
5 L9 Y  N* B4 G//    if (! ad->is_running) {
7 @5 l& j5 B1 k0 b//        Error_Block eb;% n6 O; B& J# z
//        Error_init(&eb);) a( |+ `) C: [' @
//* S3 s; y( P' c
//        Clock_Params params;0 \5 C  X9 O: W8 ~% V% I0 h: u( p
//        Clock_Params_init(&params);
1 s8 C: Q  p. P# O8 ~! B9 N//        params.period = period;
) J2 w$ Q8 N2 G" w2 q8 Q) F//        params.arg = (unsigned int)ad;
2 y6 n' o3 \' i; F7 R9 Y- |8 V6 c//        params.startFlag = TRUE;' [$ F$ F; W9 _- {
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
- A, t4 K) l3 o& j0 K( {, Z5 i* y9 X//        if (ad->clock == NULL)' x) S4 ^& }' Y' l3 n1 D
//            LOG_FATAL("failed to create clock");7 w% M1 [! ^& w" h# f' ]! @
//
) J( I; s" n* y, |0 B$ y  ]1 w//        Clock_start(ad->clock);
! Y3 A: I, p, |6 G4 l//    }2 {  ]  B; f$ Q' C" c
//    else {& {& L) {% z/ d* f, e5 y& u
//        Clock_stop(ad->clock);; ^7 Y5 o* |' N. B* b2 I
//        Clock_setPeriod(ad->clock, period);5 U$ t* Q( p0 L- @
//        Clock_start(ad->clock);+ ?9 E" Q& I! J/ j' d
//    }
  Z4 y$ l9 A& h0 [% h6 a; k. y3 X
0 X1 D4 Q6 N; ~( Z         // 创建定时器
# `1 s- z: t% p; k5 W! b" M            Timer_Params timerParams;0 O( ^# z6 T  R( A, n: p
            Error_Block eb;
, K6 z* R1 V+ j/ m0 f3 e5 f2 q) i
            // 初始化错误块, ^/ p8 B2 r2 e9 T7 O. K( j
            Error_init(&eb);4 E. {: b- r- V: Y1 Y( b0 [
            // 初始化参数1 C& E+ ]% S: l( y3 N' k
            Timer_Params_init(&timerParams);
/ ^1 R8 W6 t$ N! u' q( S
: }' P- a0 g; o) y            // 配置周期
# D$ O" C3 }* q: f            timerParams.period = Period;
+ j! X* o# ?" u9 O, ?            timerParams.periodType = Timer_PeriodType_MICROSECS;
6 g7 V+ H2 K! V) d) r" w! ~6 @
, U4 }; }) ?- ?5 i            // 实例化定时器
+ `* `! y* G( f            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);- U' \# K& o7 I0 W1 G8 `" u
            if(Timer2 == NULL)
) H! f. d" ~7 H) N5 @            {
$ T; r+ j- `0 u                    LOG_INFO("Timer2  not start。。。。");
$ c( t' a+ q! p& X# B0 S4 k& ]+ _            }
* r' p1 L( U) ]0 E$ P: E
9 Z5 d" b8 o- F! O            Timer_start(Timer2);
- U5 h$ H7 O& U& v- t# k. q4 k7 p- K' C) Z  u. g/ B
            LOG_INFO("Timer2 start。。。。");
  ~* B5 Y- S4 s( D: D9 j( N! v$ x( y- X3 x1 \! ]5 g
    ad->is_running = true;
( C' \3 m; U; S}  C) }. H1 o- m/ [# `; R2 ?  p

1 e) l2 K- Y1 E$ c$ I; w& Q7 E
作者: human    时间: 2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4