关于定时器问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
: I1 F! B' v2 D3 O) W& N       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?) h: H) j3 a0 B2 {# W& C2 U
4 V8 [+ O5 T; P+ |1 O% B* C9 A

/ G/ ~' ^7 Z+ m  O/ i/ v8 V; N; o' E0 T+ @, S
5 ^  \; u3 x8 m7 ~+ ]% m8 q

* Z. I" [2 _, V" M8 n( z1 \& Ovoid ad7606_start(ad7606 *ad, unsigned int rate) {
$ q% F- E: Y# E" @//    ASSERT(ad);; x5 A3 x3 ]( K" I; Q
//    if (rate > 1000000 / TICK_PERIOD) {, G- c/ ]2 Y- T" F
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
# V! g. H! H0 ^0 R# L" K" m//        rate = 1000000 / TICK_PERIOD;
) U9 G0 V; F2 @$ e* O1 L1 Z//    }; X- R$ U: ?7 Y# O
//
& o' g6 ~- b" B8 I; ~  n( f. D* Q3 P2 ^//; e1 ?$ i. }- e2 X' m: k& [- a
//    int period = 1000000 / TICK_PERIOD / rate;
$ t1 E( A) W0 l//7 q! \; A; u! D( i
//    if (! ad->is_running) {2 a+ ]# K' ^; X
//        Error_Block eb;6 @  F$ u/ _" y
//        Error_init(&eb);$ f: E  h: B9 u* f9 ~; G
//( V0 t. B5 K; b' O. H, h
//        Clock_Params params;
$ p9 F1 X! L) V6 u( F( v; Y//        Clock_Params_init(&params);
' B, m. h* h, m2 `- Y* @//        params.period = period;6 R1 s$ u; t& A* Y1 v
//        params.arg = (unsigned int)ad;8 F3 i& P: C$ l3 z! _3 v
//        params.startFlag = TRUE;
. K& c$ o% h- |//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
6 P( E" H4 U) t( ?' G//        if (ad->clock == NULL)
: K, C# ?1 z, r9 O, A7 L) Z# i: e//            LOG_FATAL("failed to create clock");
- u  X( i/ F( @: Z. j//
" z6 K/ ?' f7 o$ a//        Clock_start(ad->clock);
) _- h4 s4 o. j$ e2 K" r//    }+ _" t, h, `6 u8 B' E3 R& v
//    else {3 {: F: L3 Q$ V( H4 y: z: q
//        Clock_stop(ad->clock);
, H0 e7 |9 N: P//        Clock_setPeriod(ad->clock, period);
  D; s. w- h9 w8 P//        Clock_start(ad->clock);
: t1 z' h) d; D4 p2 a: w. ~9 d: q/ u//    }/ a5 h7 W# O  U/ \4 W- }
) q, i8 ]" n+ B
         // 创建定时器
( G# l* H! a7 r0 T            Timer_Params timerParams;' S  z% s3 I" H) _
            Error_Block eb;
( f1 ?8 B- M8 t" P( X- b* O: }8 q: ~, q+ B0 h; j5 `
            // 初始化错误块
( i1 l0 @1 t- A; [2 d4 j- e: N4 Q            Error_init(&eb);4 S+ Z) e: _' y" M7 Y
            // 初始化参数. w( I1 T2 t7 J% K  w4 V  \1 Z
            Timer_Params_init(&timerParams);, g1 k( F! w/ J* ~( f0 o

  |0 [7 n. _* ~            // 配置周期
5 p+ q& d, c* i            timerParams.period = Period;
# b: q& F/ W3 ?$ F% A1 @4 W            timerParams.periodType = Timer_PeriodType_MICROSECS;
3 t; v; {9 ~* H& v6 \& |. C% w8 N7 L" d. {& k
            // 实例化定时器
2 K) k- s5 M0 f; m5 q/ F! l+ _            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);$ ?/ {1 e* ?9 F+ j0 P' A0 c
            if(Timer2 == NULL)
9 Z: J5 r6 E" A/ Z            {/ g9 {" m% j/ y
                    LOG_INFO("Timer2  not start。。。。");
. g' n, y; A+ y/ N            }
+ D$ x: p  o0 G2 {
. s3 s9 O2 R9 t8 \: R0 V9 W; F            Timer_start(Timer2);
) v1 M9 W' ]$ E  ]
8 O% J# `  y( k6 A7 ~3 o+ F& n# k            LOG_INFO("Timer2 start。。。。");
6 X- f- _& C8 [8 F2 E- v% e5 B( h! [( k. B$ z  b( |* C
    ad->is_running = true;; h' V- x8 ^: g& L( Y1 ?
}$ Z3 d9 y/ z( `

  c  H% o2 N0 x, U- u: j  W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-17 09:53 , Processed in 0.039423 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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