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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:2 t0 k5 q& o" b% s/ `
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
5 R4 g  x. }4 `6 Z
1 z- _1 q7 }4 i! Z5 R% ]5 b5 @, K
2 c! a  H' r$ V2 x* L
. Y2 U6 ^: B' j  s0 l% y; {6 i% Z* [, X7 V% u3 r
& X9 u/ S6 }0 L1 [' @- h. ?  }
void ad7606_start(ad7606 *ad, unsigned int rate) {
; R' q1 B- C. T/ C//    ASSERT(ad);
% `( x7 W8 p: v1 R% ^' `* ]//    if (rate > 1000000 / TICK_PERIOD) {6 a+ z- j# `: B, ~+ U2 u) h2 r! |; k
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: m3 v/ B0 D, T3 P3 O& H$ x//        rate = 1000000 / TICK_PERIOD;
, t- V% \1 Y5 L* @, [& N9 X//    }; Z0 H$ _5 M/ N% }
//! z& J; G0 i* E& w: J" s
/// D! T9 n. F! O/ p6 @
//    int period = 1000000 / TICK_PERIOD / rate;
2 `- t5 P* g5 {3 \7 [) ~//
6 Y/ T& n, @0 E% [7 g- J//    if (! ad->is_running) {
0 T) ]$ q- N0 O5 n. i1 @9 ~//        Error_Block eb;
! G" i* K: I2 c3 h3 v. V//        Error_init(&eb);
# a# b4 c% d# n+ C) D//: K0 p$ r# M* `
//        Clock_Params params;3 y8 ~7 v) ~/ m3 j
//        Clock_Params_init(&params);8 f) i5 B* X/ T5 o! h: h* \
//        params.period = period;
' h' ^1 J* |0 m2 {5 t$ y9 d% W: d$ Y//        params.arg = (unsigned int)ad;; b1 G! I0 w) z3 D- T  k
//        params.startFlag = TRUE;
+ x) a: [3 [$ o- W6 p5 m//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
9 {/ k# O/ {$ u7 y//        if (ad->clock == NULL). S: O9 k0 {1 D" M0 C7 v4 O: f
//            LOG_FATAL("failed to create clock");* b0 t& ]8 x+ i
//0 D( C# G4 ~0 O- H8 b
//        Clock_start(ad->clock);
$ Q1 r( u0 J% X+ g2 p4 K8 s9 d* M//    }
2 r) A/ u& K; t6 M7 U//    else {
& D3 j' [/ B/ j# i//        Clock_stop(ad->clock);
4 y0 s" b' [6 x  g  H0 \. y# {//        Clock_setPeriod(ad->clock, period);* P% y* O9 B& Y! x# @" ]
//        Clock_start(ad->clock);: \) \- H/ O, b8 e- }
//    }. f; a$ q2 j" W
$ s' h5 I3 u3 _( G
         // 创建定时器8 E: f* d' u4 s
            Timer_Params timerParams;3 O  c8 Q9 w& h, }' z2 a
            Error_Block eb;+ e/ K6 b% `- G. k4 H. \
$ ?5 J+ f* n# F  k7 z, j
            // 初始化错误块9 t3 ?% Z: g  ]( G
            Error_init(&eb);# e7 `+ \: `5 T) ?6 Z: i
            // 初始化参数  V+ I& }! Y0 t/ |# Z/ j
            Timer_Params_init(&timerParams);) H8 b6 c9 K1 S% r1 \

; M* g% \* e% ~5 V+ z( v  u* j" O            // 配置周期
) S$ `! y/ c0 H) Y% E            timerParams.period = Period;
! [8 o* y1 q$ T* v9 g- F$ X- j            timerParams.periodType = Timer_PeriodType_MICROSECS;
' {- h- b" t! m! R9 M
+ r9 R$ }# O* `/ ]8 F+ }$ b" j  s            // 实例化定时器; H6 U2 H( f% W7 l
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);- s6 O, H; M* ^; }0 S% `" y3 A: p
            if(Timer2 == NULL)
+ V8 ]8 D8 Y7 E# f5 s" S            {+ o; y8 a! y+ a( Q5 G
                    LOG_INFO("Timer2  not start。。。。");
# V, g1 U5 h! K& j: \7 ~2 x8 o' J4 u            }/ t# q7 C) E4 z) `

; ~" e) G/ A* {7 z) |! @            Timer_start(Timer2);8 Z, u4 t/ D1 z/ k3 A& T* R

) Q: m- R4 H. i            LOG_INFO("Timer2 start。。。。");9 o2 Z: W" t1 P3 v6 V( i0 E

# t* i% U( F4 \0 S# v  W    ad->is_running = true;
2 ~5 E# S/ E5 k8 y& e}/ o. @/ ^" i8 c  d+ n6 N  ~, h; V

. O; [9 w& }8 B1 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 14:40 , Processed in 0.035455 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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