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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
$ M% w3 p  G0 X% _+ T+ d       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
: X4 `1 z3 U* N; q' `; N
# f. \+ ^$ S& T8 [2 a) U$ {
4 R* a% I: f0 I" F( s  W* d( C4 u

" u$ m1 k; e2 @% I4 E! y% n  l* G+ Y, c# }
void ad7606_start(ad7606 *ad, unsigned int rate) {. h* T0 N, W8 a4 v+ Q) [5 v" c* r
//    ASSERT(ad);
) f; \$ z, ~8 X/ S. w% M- u6 h6 U//    if (rate > 1000000 / TICK_PERIOD) {
0 ]! }/ h7 _! }# B2 E//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
# G9 ?9 W/ `1 y. B7 D, Z//        rate = 1000000 / TICK_PERIOD;; S7 q% A/ r( w, W+ k3 v
//    }1 t% ~7 I4 @6 b5 c
/// ?4 H: m! a: ^9 M/ }$ c, N, b
//! O, r6 K8 ]$ }4 i
//    int period = 1000000 / TICK_PERIOD / rate;
# x( k$ G: J; W, @3 T3 ^5 a//& v% Z" x- B, F0 f6 T
//    if (! ad->is_running) {
4 E$ }- K8 h3 J) e7 [8 p//        Error_Block eb;6 c7 `& h7 p/ A: _+ E' O1 O% @4 H% B
//        Error_init(&eb);8 w4 u6 W. j. o0 ?  d0 u  Q
//$ `- t, P+ U% s
//        Clock_Params params;
0 m' R* F7 Q( G  i//        Clock_Params_init(&params);
- U, y+ ~. o# }8 t% r) b1 ^3 {6 P//        params.period = period;  q) l1 s( L* _
//        params.arg = (unsigned int)ad;
! [* o1 H" |4 @//        params.startFlag = TRUE;, d  t5 ~% V' I0 c, A5 f; \
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);9 L+ u3 C  S$ l9 S3 \7 P
//        if (ad->clock == NULL)
) O: h- P3 `& E; d4 X. I  m  f3 w//            LOG_FATAL("failed to create clock");9 R' \. N9 p2 Z$ B5 G7 e
//( w& r- o8 y) X
//        Clock_start(ad->clock);/ y/ r! u* E( r' o
//    }. O- L; G! u( M- s" B, G; D
//    else {- `$ E' q+ F! K4 D
//        Clock_stop(ad->clock);7 y8 f+ O3 [2 j4 ^4 P4 A; J
//        Clock_setPeriod(ad->clock, period);# F: `7 |5 R8 O6 P6 q! @9 H1 L
//        Clock_start(ad->clock);% C& b' [  U# e& k5 Q
//    }
/ l- e' B4 L6 `1 d2 `3 J' x' w% Q" N3 r+ ?3 d; O
         // 创建定时器
8 K  m1 Q! W% I$ R( Z            Timer_Params timerParams;$ q* ?+ t3 L- ]# m2 s) f' }1 n
            Error_Block eb;1 Q& y6 Y9 X* q: A- F. b4 Z

: c6 S1 J; k3 S1 d- i6 t/ `            // 初始化错误块3 u; \  j6 ?0 W: m0 A0 q/ c3 w
            Error_init(&eb);
$ ]6 b3 E+ l: x/ U1 p! ^            // 初始化参数
$ K0 @- q$ l# H5 a8 R            Timer_Params_init(&timerParams);/ y: S& Z) M& R# J! k: T( o' _

+ D7 T$ N, S; y$ _% M6 |# u            // 配置周期
  c3 w" X6 L6 {' W% A            timerParams.period = Period;
3 X2 n# V4 \; o  V0 I            timerParams.periodType = Timer_PeriodType_MICROSECS;: f- C1 Q" `2 ?* E
) }' U: A. r" J1 n
            // 实例化定时器
0 O" D0 C2 y7 w) E2 i0 c0 D* T            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
2 J+ k9 \3 }% _, B: F: p            if(Timer2 == NULL)9 |, }; |" a' M
            {) d* U5 m7 n  j9 g- K. f
                    LOG_INFO("Timer2  not start。。。。");2 M/ o# D$ h8 N% G( B
            }4 Q. x5 E7 g5 a6 O4 Y8 F

+ f' w# P/ A& q+ `( ?$ }            Timer_start(Timer2);
8 ~5 V& a* C: S1 \/ I% [* \. ]
, ^! C( |  a& ~0 M4 h: n- Y            LOG_INFO("Timer2 start。。。。");
8 v7 B& B9 x9 H! y4 b. U3 ~. G# x$ |
    ad->is_running = true;
& _% E0 M! Q+ o# D0 ?' L}% g4 J# I( A, z2 g( ]1 w2 P
9 p- C- x4 o" q% 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 17:59 , Processed in 0.035440 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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