关于定时器问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:/ x6 {$ w1 S) v5 s
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?; r9 |1 b) D% j2 f

8 k' [2 }4 h4 T3 w$ o
3 T0 ]9 b1 k( A, G
9 P% R/ d' J: |1 |: ~, x
7 U  h( i' l* h" m3 K% }3 v1 ^4 q1 Y+ N: K
void ad7606_start(ad7606 *ad, unsigned int rate) {
2 \" ]2 f( X- ]2 }! z9 Z+ m//    ASSERT(ad);! p& V& m6 @7 P# s; j0 ]
//    if (rate > 1000000 / TICK_PERIOD) {9 L: {, F- u. d) I
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: J- i( d+ _8 e% a1 ~( J9 y7 K//        rate = 1000000 / TICK_PERIOD;
9 [& e: L4 U5 ]2 @) N) x//    }
1 R3 ^/ K) e$ @0 s. |. o$ S* ]//' D: \! G1 a/ p5 j' K+ i
//
$ w! L+ k6 d* `& A3 ?//    int period = 1000000 / TICK_PERIOD / rate;
* M! a, _1 y* J) x" l  f4 G//
2 z% z& u* V/ V//    if (! ad->is_running) {6 [4 H& |9 ]6 ]2 m/ Q( X
//        Error_Block eb;
# @6 V' C* x; J//        Error_init(&eb);, [7 [3 b2 y5 z! M* S
//
) d1 o2 v  K. P7 _5 Z//        Clock_Params params;
' B3 a) A8 x5 j) F7 n0 v# n8 e//        Clock_Params_init(&params);
2 Z& O0 m+ \8 \  o0 }/ A+ H//        params.period = period;
! w5 w5 R2 ?* O8 Y' p& j1 }//        params.arg = (unsigned int)ad;7 n& w1 V4 N' {4 _" K0 z
//        params.startFlag = TRUE;
3 G2 V" m" m8 c( q: A% a9 F3 E//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);2 y! B. h, u2 k$ h: _; ~8 N, \
//        if (ad->clock == NULL)
& H' o6 ^2 l8 I2 e  O//            LOG_FATAL("failed to create clock");
% Y! A! y$ q) X9 a/ ^2 p0 J, t$ E//6 Z5 l; i1 }3 e6 Z5 {% a3 c' R& \
//        Clock_start(ad->clock);+ C0 p) A* G7 x4 g* x, a
//    }- ~! }1 \: X* p" o/ }* o6 V
//    else {
# _$ p3 _! `5 g# e3 t; ~% x//        Clock_stop(ad->clock);4 l& t7 S8 L; r2 a3 k. C
//        Clock_setPeriod(ad->clock, period);! e! K$ S9 ?+ m# }
//        Clock_start(ad->clock);
/ S. G3 k1 Z' w//    }
5 Y* P5 L' j( n9 K0 H5 t. g  c" ]
1 ]7 N0 R' n; C  d3 M  T% _         // 创建定时器* B1 q9 Q( j3 U" U" ~4 L
            Timer_Params timerParams;4 D  [' x8 x; m  q. g, T
            Error_Block eb;
' P( B/ c" Z' D: [
$ X. T2 x+ ?1 j# |( S            // 初始化错误块# X! Q( S/ Z1 [& a/ j. r
            Error_init(&eb);
7 e: a5 B+ O  M5 g: Q" c            // 初始化参数
3 T: s- F( N7 |4 e2 ]            Timer_Params_init(&timerParams);
& k; H+ ^) a8 \9 ~) h4 J4 v  [: `! H. L5 F
            // 配置周期
5 v: L9 @" L( _  q! @! o! Y            timerParams.period = Period;
+ x& @9 `6 t9 L* J            timerParams.periodType = Timer_PeriodType_MICROSECS;' R8 X2 S1 ^! T+ G9 t3 @" }

* X0 R# J7 _) s( |6 g            // 实例化定时器+ [/ ~. j% R9 n) G2 h9 W& j& O
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);  b- z( e8 m6 C1 R- @% A3 j, [
            if(Timer2 == NULL)8 m& K% f! ^6 _% ], B/ L1 h% k4 ^7 y
            {
' |! `% R$ j' i* H6 F                    LOG_INFO("Timer2  not start。。。。");+ g# [6 `+ o, ^$ _9 U# @
            }  X* c6 Q: r/ ?! U& X
, y2 X8 a! @# n& ]7 J2 P7 g
            Timer_start(Timer2);
! M( K( v% s$ J# v, K2 R2 B: J
! m% L, q6 K( i, ^            LOG_INFO("Timer2 start。。。。");
# f# `3 _& `& L6 d" L8 J  Y, p/ k' }" q' ?+ H6 Y1 d
    ad->is_running = true;4 ?- }% h1 Y& `' t; P1 m) n8 g
}
) P% D( R0 m% k* C; `; L& V: l) ~9 W" r7 k1 `3 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
沙发
发表于 2016-11-16 20:13:46 | 只看该作者
您调试看了是卡在什么地方?是不是进中断的条件没满足?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 14:48 , Processed in 0.049639 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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