嵌入式开发者社区

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

作者: vtinf    时间: 2016-11-15 15:17
标题: 关于定时器问题
您好:
" K$ A# I7 B+ J- x2 z/ C: H1 P8 Z       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?( ]3 ~, S% o9 Q6 ]# M

7 u4 U) `/ a8 `5 o' y
! ]" V; h6 f: K! J1 W+ E, x0 N8 w7 i7 e6 T" _, G  ?* F7 K& X8 Z
, {8 L8 X: ~% k5 [2 h

  H' ], Z( T* c3 K/ T: \void ad7606_start(ad7606 *ad, unsigned int rate) {) S- E6 M$ X) ^+ O
//    ASSERT(ad);- [8 I0 w' Q6 B5 e9 _) ^  G
//    if (rate > 1000000 / TICK_PERIOD) {( n) G; a5 G6 Q+ R
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);: k/ Y. p9 O0 ]2 F
//        rate = 1000000 / TICK_PERIOD;
; r1 n1 \/ w. ^8 y  p- y3 _4 {//    }
6 Q) N' N; |  N2 K+ J% V//
* N9 F0 p  Y$ Z% z//9 u: J# a# Q7 q
//    int period = 1000000 / TICK_PERIOD / rate;! F- i3 c( @/ X; {. I, j
//- U6 p7 h8 Q' L
//    if (! ad->is_running) {
: C& |, |# Z; R2 i  Z9 f( a//        Error_Block eb;
/ |! i7 n7 M: s, R8 e! u9 o1 e//        Error_init(&eb);) W* M- O) b6 m5 {; X6 r. W
//
( m1 I% r* ]+ V8 E& `//        Clock_Params params;) X3 j) O; ~! t' r! e
//        Clock_Params_init(&params);  Y& a/ w& ]+ f. ?* s: C! |9 N
//        params.period = period;
# U2 f  f9 W" J/ ~, |& Q% w//        params.arg = (unsigned int)ad;
5 l3 m1 Z8 }0 K//        params.startFlag = TRUE;5 j' U# y* z$ b( \6 R, _
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
9 q3 l6 H! Z( ~" k//        if (ad->clock == NULL)
& \6 M, ?9 y% A6 u//            LOG_FATAL("failed to create clock");9 N) O% N* k% m4 i0 z
//) q& N  B  I' O; X
//        Clock_start(ad->clock);
  z0 C# \# R# S& g//    }
* o1 G! b! p6 l! Y5 t* ~//    else {
) |& \0 T' \3 C//        Clock_stop(ad->clock);
5 t) G" A& B9 D//        Clock_setPeriod(ad->clock, period);
& m! j  V) k; B4 V( c//        Clock_start(ad->clock);
+ M# n' @. b) a8 U; y//    }6 Q# Z1 ]# |& v3 A% h4 w# `! B
% Q) [6 C* {" y8 n1 Y
         // 创建定时器/ k/ g5 T/ i- Q9 c4 h% G9 S- Z+ e
            Timer_Params timerParams;% b6 A! U9 G( q2 P0 Q
            Error_Block eb;
' O% f4 K! r$ e* [: H+ J. q6 a( r  G; ]# ^- ]( h
            // 初始化错误块
; E; H$ m( E1 A            Error_init(&eb);, i) c* Z% I8 q5 A5 O
            // 初始化参数
1 U4 `( x% U. R8 A            Timer_Params_init(&timerParams);
& s$ w9 O; Z$ Q; g2 }; Y- e+ W
* w6 e' y3 Z# @# u6 H4 ?            // 配置周期
$ ?) D; f" P/ N            timerParams.period = Period;. R7 {! e) H" C7 h# K" r/ V
            timerParams.periodType = Timer_PeriodType_MICROSECS;$ G7 J2 l* t8 c$ J! {8 e
3 ?0 K0 i7 s/ U* U4 l
            // 实例化定时器$ n  X3 R/ c( Y! |
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
: X7 I8 @* z; A. Y: }# y            if(Timer2 == NULL)
3 h1 i& l+ E* L$ s) k4 \4 Z2 z: U            {' ^4 e9 V7 C9 z$ e4 d
                    LOG_INFO("Timer2  not start。。。。");0 c5 W: x! V! G+ [& Q
            }! n( @4 q6 R* \
' q+ R8 |2 H8 [" I3 t% Z  M/ O
            Timer_start(Timer2);
" M: U/ w8 P: G7 ?! S/ H/ j6 E! f- o
            LOG_INFO("Timer2 start。。。。");# S$ ~1 m( s" p$ s0 v

9 n5 L' O# u) @: Y8 q    ad->is_running = true;
& @4 Y4 e9 P4 J8 j7 l}7 Y8 ]$ B) E3 r$ ~
# _- R) J( E4 l9 G$ S3 E

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




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