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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:4 E6 @' @8 U) u
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?' p/ @7 P4 U: s- R

, H' l# k1 n% L  M0 G$ o
/ ^9 p! T0 ^8 e, |( \3 `8 Q9 i; _2 V, O4 w  T1 k
" k  a- Z: c$ |# v& b

. Z/ R4 v  [  D" e7 fvoid ad7606_start(ad7606 *ad, unsigned int rate) {4 T3 I0 ~5 V" X2 a0 }
//    ASSERT(ad);. B. C/ j5 B* ^4 c$ R3 A- ^7 b
//    if (rate > 1000000 / TICK_PERIOD) {
! W4 D8 [- \* ]2 I# |//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);! l- E& @  U& C9 L: u
//        rate = 1000000 / TICK_PERIOD;. R8 d4 T6 F' \. Q
//    }# q8 ^$ w$ X* E5 M& |4 c$ @4 R
//
' Y3 \1 m: R! ^& A  a6 N//
/ n2 x/ `( O- r# o% i5 D, z//    int period = 1000000 / TICK_PERIOD / rate;
3 K) R: Q: {3 T) U//
. ?3 u! O; s8 H//    if (! ad->is_running) {
4 ]' P" L9 J# }3 }. }. h% M//        Error_Block eb;) U1 C& J! n/ K
//        Error_init(&eb);
9 b" {% y6 j) p0 O7 U4 [//9 e- h* N0 Q( f  s
//        Clock_Params params;
6 T/ g# y+ j) Q' s! N1 B7 w, K/ }//        Clock_Params_init(&params);" i# a8 q8 C6 F) s! d$ x/ }
//        params.period = period;: b0 I2 g6 p, V, j9 t
//        params.arg = (unsigned int)ad;& p3 t; V/ \! ]6 K+ R8 P" x
//        params.startFlag = TRUE;) U! S4 Y( A( z- |$ j
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
1 `+ Z# I+ G: A2 m3 m: B2 C3 F//        if (ad->clock == NULL)) T' |: n' o9 `$ z/ r7 F$ L
//            LOG_FATAL("failed to create clock");; H, }6 M3 f" t: f; S. Q. j
//3 ?6 O8 ^9 L+ S
//        Clock_start(ad->clock);9 \, h- e# v$ A7 t) F! i% u
//    }
" f3 E+ G9 F6 C//    else {
+ i$ D( t' k, b* U! V! ?+ W//        Clock_stop(ad->clock);
" ]9 a/ U2 w  N. A' ~& H//        Clock_setPeriod(ad->clock, period);+ [! y+ ^0 [3 e* H7 j" }) L
//        Clock_start(ad->clock);0 a& O  R: U6 z8 i4 I& S
//    }
1 I3 L( t1 V" s7 e3 \; n& [: |' ~$ |% X7 L0 U( y$ }) w
         // 创建定时器
6 v. p: N' Z1 F$ h" B            Timer_Params timerParams;% R. C4 g$ C+ u6 r# I, Q+ d
            Error_Block eb;/ m) A( a6 ^: S/ k' W# h/ ^) O

1 @, N& B( R$ _: p+ P            // 初始化错误块3 g4 a* j, k" S3 ]* e) q+ ~$ R+ p
            Error_init(&eb);+ ?/ z5 g8 F8 N: B0 @' P1 d8 g/ A
            // 初始化参数+ k: Y4 p, v+ B+ ~) i, y
            Timer_Params_init(&timerParams);
  F: g1 q* K9 q( O9 o
) u5 `# e8 s) x' s8 k8 c0 f            // 配置周期8 l) L. z9 ?  v7 V+ a- j6 x
            timerParams.period = Period;, @0 u3 l6 |' c# z* I: l, `
            timerParams.periodType = Timer_PeriodType_MICROSECS;' e7 g. s) ^) c- v9 @

" ]- J; p2 {; \            // 实例化定时器
4 B1 B, S  t  C" R            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
) h# y! ^, r! [2 [8 c            if(Timer2 == NULL)
% I2 n$ u. t4 D4 T            {
! ^  s! ~& o. k8 R. K" @, Y                    LOG_INFO("Timer2  not start。。。。");2 b0 U1 R/ n0 |/ e" p8 S
            }
" G) Y0 z3 W% d  {9 H
& D2 ?/ {; [# l4 h! I8 Y            Timer_start(Timer2);4 d, U' `8 K) w, a! K
5 o+ z1 H0 z2 g7 q, L
            LOG_INFO("Timer2 start。。。。");
: }8 \/ c* z9 n- X7 F: R/ R. o  @: R# p" i& v" u* C1 y9 N3 u
    ad->is_running = true;0 a; O! O% _3 {+ p& s
}
  T# m: O. f) ^! w1 h/ B$ x8 D
1 x1 o- c2 }- d3 ]5 u3 a$ A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 02:45 , Processed in 0.038433 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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