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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
您好:
7 J" Q+ r/ Z) k* S, u9 Y       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
; t: u" E7 u$ j: G3 ~2 A9 G* R* h( @+ ]" p& X

% i2 U& X- @4 x' c: o3 P7 w- R' ~2 k2 ^" v2 c9 ~7 ?
( T2 A& v8 Z3 k& ]# o! ?

/ ~  @: ?# p0 M9 k7 `. D/ \$ u4 jvoid ad7606_start(ad7606 *ad, unsigned int rate) {4 r, q3 Z. W4 v! H" P' ?  m& u
//    ASSERT(ad);1 X  x  y  E8 `' `
//    if (rate > 1000000 / TICK_PERIOD) {
7 O6 L; r4 f  x( A2 x" m//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);" p: _) u4 b9 ?/ i! ^- y5 F
//        rate = 1000000 / TICK_PERIOD;
4 Q9 X, r; I( a- s! d( k//    }4 e- o9 `2 Y) X+ A0 S
//
% o1 x* U$ z9 p, N/ h1 E1 Y& T. |/// z7 J) e# O  U
//    int period = 1000000 / TICK_PERIOD / rate;
# ]7 ]% r" B9 D; I1 Q//, ~& d8 C/ Y! P  T
//    if (! ad->is_running) {
: `5 j: S. E$ ~//        Error_Block eb;
1 R" W! @; @& s; w4 p1 w//        Error_init(&eb);
; I) `( M% M9 x- Q//
% V, i0 d+ H, D- X//        Clock_Params params;# T. Y8 {3 u6 C# i
//        Clock_Params_init(&params);
- H9 \  j- u/ K; M  ?//        params.period = period;
  B) r9 G; c: l% N$ n: w$ a//        params.arg = (unsigned int)ad;
' J& Z- J6 L: s7 C2 R: Z//        params.startFlag = TRUE;
( D5 V: c! Q- H( I, v//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);0 v5 P0 N5 ^: ]) F1 L  r
//        if (ad->clock == NULL)
5 j+ L- C" O5 g" ^//            LOG_FATAL("failed to create clock");
6 @7 b& m# [% B/ J//
7 `3 X" K- C/ @/ G//        Clock_start(ad->clock);# e0 T+ ^; R, X! e% O
//    }! n5 w3 O# \+ l& W9 d! _
//    else {
0 g0 e  q8 J. l8 g& U4 q, D//        Clock_stop(ad->clock);1 I! k( ]* _. o; S. ^& c( [
//        Clock_setPeriod(ad->clock, period);  B' v& @" d2 G. g
//        Clock_start(ad->clock);6 `- x# K% H  O
//    }$ {+ e( l! U5 Y
0 u  i6 h' [; {8 z
         // 创建定时器
, `( W6 X) q* f/ d& }  K            Timer_Params timerParams;
2 P0 R2 y4 G: ?$ i1 V            Error_Block eb;% R# \- K! k3 `, i
9 f: n7 H/ h: U' S9 P3 L" P
            // 初始化错误块
! ?8 |; m4 z' ^( T            Error_init(&eb);
4 R( X3 Y; y- y1 q            // 初始化参数
$ Q9 r% E* e: _# Y7 P- M9 s            Timer_Params_init(&timerParams);# C0 W( _/ V" D7 b5 b$ C9 ?. A

+ l4 L# P# d* q9 t! U/ w, D            // 配置周期
  o% e0 \8 U9 }( \* R            timerParams.period = Period;
! h7 O5 k% X8 d# A* x            timerParams.periodType = Timer_PeriodType_MICROSECS;
5 ~5 f' j- s% A& J2 A! Z3 f
7 J9 l: x0 C) ^  E0 u6 f            // 实例化定时器
4 O* z0 P. O) w6 k* ?. p            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
4 v& y1 }' F& {- A/ H' b            if(Timer2 == NULL)
) J* `# m( s) k, i; ?" w0 p            {
' a) L9 Z1 A5 b) ?( p5 n                    LOG_INFO("Timer2  not start。。。。");
) n; m: x. T, p6 c$ _# @* z% Y' m            }1 Y  r% _+ X, ~( H

7 o' l& e1 u! \/ @: C* c: o& M            Timer_start(Timer2);7 R- z4 O$ j2 E* o4 g2 F" r& [
8 s* q2 I9 q: A, n' s9 x
            LOG_INFO("Timer2 start。。。。");
! t0 n" |8 G' t5 V
9 n5 ~  G/ S3 L6 a; z7 Q% K3 r    ad->is_running = true;& u; ^7 U/ i; j
}9 F7 K, z3 I1 ~

$ f9 ^( ^0 v; m: q' M5 q8 _
分享到:  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:51 , Processed in 0.048266 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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