嵌入式开发者社区

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

作者: vtinf    时间: 2016-11-15 15:17
标题: 关于定时器问题
您好:" C8 E- F  w: ~/ s/ r
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?3 o% Q, ]* t% x
, k: d7 S% Z) g6 G. n* ]) [+ F! T

6 B  U& B+ c. P) E& A
0 O. r( Y" h1 y, Y. Z
6 K# J5 B0 |5 k# e/ I- X5 _3 a4 z
void ad7606_start(ad7606 *ad, unsigned int rate) {
' `) l1 p" O0 \6 w+ k//    ASSERT(ad);
: I6 B- s9 G! i8 v2 _2 x. P//    if (rate > 1000000 / TICK_PERIOD) {
4 q8 {# G) `1 ?6 Z//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);* F" j+ X* X, F+ d, R
//        rate = 1000000 / TICK_PERIOD;
3 X& v( `; y. y! f: Y* X# B//    }
, g& R4 H* D; Q9 p  H6 J0 P//9 U, H  }) d* \
//
% c( r* a& M' g8 l9 a//    int period = 1000000 / TICK_PERIOD / rate;/ E. @5 Y6 {8 Z3 B/ [* c
//, }- V# f3 @7 v) n
//    if (! ad->is_running) {
: t) a" |* T. H0 r/ M  x//        Error_Block eb;/ N! f7 B1 K9 `( L9 P7 J
//        Error_init(&eb);8 d: \* g" z) S% W- {" g* ^. d
//
; E6 X) {3 h0 d. z) j& q" j% x//        Clock_Params params;7 K- {6 R0 ^' @
//        Clock_Params_init(&params);2 m, V; r" ~- F3 J5 k1 ?, [( l
//        params.period = period;
$ L1 |: u$ R2 {* H//        params.arg = (unsigned int)ad;
; c- m. U: [% l0 x! g" g( U+ o//        params.startFlag = TRUE;8 H* F) m+ g; t; l) a
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);; i& e( [% S9 n3 l3 v
//        if (ad->clock == NULL)
8 z2 e! |+ e: N& j//            LOG_FATAL("failed to create clock");
! P& \# ?7 k4 p2 x% z- n//2 g6 i0 I* t! o7 F; E8 U1 b
//        Clock_start(ad->clock);
( _1 @2 q0 s. N1 S//    }' w% T/ a: d, D1 T2 r
//    else {) n# Z, C4 N9 R
//        Clock_stop(ad->clock);) S# f: d1 h9 f' B9 D
//        Clock_setPeriod(ad->clock, period);1 v1 K3 }& L+ u5 D: N. X
//        Clock_start(ad->clock);1 `; Q" {; G7 t1 t9 J  ~6 m
//    }
# G  E7 A  L+ M. l
9 C, T/ B) H8 }) X  o4 s/ z6 m         // 创建定时器% O+ s* z' S$ q* H2 F  W
            Timer_Params timerParams;
: @1 _4 r" r- @, h            Error_Block eb;( J  W! f! m& H

' h" d7 [' i, ^- ~! P( {            // 初始化错误块. [- ]+ m5 D+ l2 E$ s0 ~, P
            Error_init(&eb);
6 L6 {* J3 d4 {9 T            // 初始化参数
0 N5 T4 P3 c9 w            Timer_Params_init(&timerParams);( K: C: L5 l* V& V& w3 j8 O) s! V5 p

4 J$ r3 M* p/ m$ _) v            // 配置周期
) R% ~: T9 x9 b1 U' Z6 j9 R+ X- M            timerParams.period = Period;9 z5 m5 b% Y6 V/ p3 g: k9 h
            timerParams.periodType = Timer_PeriodType_MICROSECS;
3 _- ]3 D. J" h0 {
9 e6 W. @- V% [  ^            // 实例化定时器
- ^6 }9 l  M$ w* c& q$ c5 p            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);1 S) Y  E( ~9 J
            if(Timer2 == NULL)
$ b# I3 _! D/ S            {' g* Q6 j0 ^% {7 Y9 d0 @
                    LOG_INFO("Timer2  not start。。。。");
/ f- b* [" X. F! Y9 j, F4 I            }3 @) }+ E! p' x& m: r- j" ^
8 K; h/ r- l. G( N7 [% D. I3 V
            Timer_start(Timer2);
8 i$ g9 A" a) t% i' n) P: l* ?4 C/ b
            LOG_INFO("Timer2 start。。。。");
% B/ d. g' y6 h/ }8 |" o
* |9 |% D# m1 o    ad->is_running = true;3 B! l% [6 u1 c% g1 W
}
8 I+ i1 k9 ]! ~* r+ {% |2 ~- `, v( a

作者: human    时间: 2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?




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