嵌入式开发者社区

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

作者: vtinf    时间: 2016-11-15 15:17
标题: 关于定时器问题
您好:5 b4 d- o  }2 t! n& X7 M6 u1 q
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?2 S$ G# x$ J0 J" a/ i
3 u; A0 t( l1 a8 Z; L. E5 T; X% B3 c

+ j' D6 O) x6 ]0 t& W  D" z  N( J, H$ U, W: u
( a' g+ f4 u8 \) R) p, `" N# G
( B. Y, c$ Y0 }7 N3 X+ U( \% x
void ad7606_start(ad7606 *ad, unsigned int rate) {. Q* x/ L: `5 W. W
//    ASSERT(ad);! j& a/ {* a/ F4 K/ y( Y& r/ |) n; |! A
//    if (rate > 1000000 / TICK_PERIOD) {% C/ a# k/ D6 G2 d
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);: g& T- s* Q( V% x  [  s# I
//        rate = 1000000 / TICK_PERIOD;6 J9 s9 J8 f; K+ k
//    }9 [" ]1 I# w2 _% Y( \8 }8 W
//
* N% [. ?  W3 v' q4 k1 v//3 F/ M# v. j# O+ u1 C
//    int period = 1000000 / TICK_PERIOD / rate;$ C) z6 {1 q4 p  d/ I& U
//$ y/ W9 c: P( e" @% Q2 \4 G
//    if (! ad->is_running) {, m' T! S- U" Q* a4 Y$ D
//        Error_Block eb;- t  t7 [" Y# ~, f' `/ F1 \4 B6 K
//        Error_init(&eb);6 \( c) n9 P: i) e
//$ h; s9 b& ?, A& `3 s( G" d& D" ?. a
//        Clock_Params params;
. f2 m- T6 ]; s7 H; }- S//        Clock_Params_init(&params);
) `4 z  h# ]1 ~+ j& X//        params.period = period;
0 p; g- `' v  l3 F1 Y//        params.arg = (unsigned int)ad;, n- `" T2 g; {- v" `
//        params.startFlag = TRUE;
/ y# R: G* b4 U6 K0 R) }; \//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);0 U. }7 o/ \/ r9 ?
//        if (ad->clock == NULL)
8 f8 T& f7 i9 \% B/ U) o/ y# H1 g4 {//            LOG_FATAL("failed to create clock");6 b* h- j* u& w
//, i  `8 c7 b6 N4 i9 Z; }
//        Clock_start(ad->clock);
4 r$ f, U. f9 b7 V& ~8 A! n4 S//    }% I5 i5 V* |- f2 ~
//    else {2 L! n; O  a( x' W: N
//        Clock_stop(ad->clock);
5 p& T! D6 V* A' ]$ \; A//        Clock_setPeriod(ad->clock, period);
/ a# n+ E  |" R1 w5 k//        Clock_start(ad->clock);
% M, ^, H0 V# a; D//    }& |3 u2 A, h4 C4 X
) V6 s6 y$ V' I4 h- l  S4 ?
         // 创建定时器
" z3 J  c4 \2 h$ r6 K8 C            Timer_Params timerParams;9 j1 H! H5 ?, E+ J. H
            Error_Block eb;
4 \* U6 e& {6 `$ v4 v- a  o- c3 D8 Q* i( r
            // 初始化错误块
" p( N, {# ^  T$ P1 H            Error_init(&eb);/ _  r7 k3 ]8 s! ]1 X2 P% o9 Z
            // 初始化参数
, V# F, N0 L+ Y% o! |5 |: x: d% p            Timer_Params_init(&timerParams);; ?9 C& y) g, ?9 I; G$ I
3 y0 P: r9 G) Z4 G- O6 {
            // 配置周期- ?9 w9 \& |" [; v7 [" z) B1 E
            timerParams.period = Period;$ d' _  l: w4 ~) ]5 ~' J
            timerParams.periodType = Timer_PeriodType_MICROSECS;
$ D* G) a) V9 H8 @5 B! L1 P. `
0 P# a7 R/ X& L8 W; q6 o! ?            // 实例化定时器- Z1 M* N- r0 Q- W
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
( B. z7 |1 g: E* D( c" M            if(Timer2 == NULL)" S1 m4 J! a# ]6 _* d5 [+ |$ L" `
            {9 y& j; J4 Z6 z
                    LOG_INFO("Timer2  not start。。。。");: y' y4 h* X3 `9 s( q
            }
; a; D# i" ?, |
3 y' u% ~1 N3 p; o+ `; \! p* v            Timer_start(Timer2);  l3 v) _* B7 F/ L! c6 X

+ H# Y0 O( R, Q/ g# M: _1 @6 F2 O! B            LOG_INFO("Timer2 start。。。。");# k6 i4 t' K* Q
3 z4 D' Z; W/ p7 B8 p
    ad->is_running = true;9 T+ E8 w6 N7 g2 V2 V) g
}! w0 ?# ~- _/ N# N5 b0 _+ \

1 X8 }& ?( Z6 F( {  G
作者: human    时间: 2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?




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