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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
* b& r: w7 m3 {8 F. ^0 _       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?, T0 j+ ]+ D5 J0 e  a6 z
$ @' U/ p3 S2 ?! o

- T% n8 k% |- e0 `, y+ ~& a2 l7 a. J+ {  X5 U

5 I' O+ {# G7 w( C" r* N8 ~4 A8 Y7 y" w
void ad7606_start(ad7606 *ad, unsigned int rate) {) T$ t1 B! q" u1 S: H) C
//    ASSERT(ad);
* J& P4 ?* V3 p* R% x2 G1 R//    if (rate > 1000000 / TICK_PERIOD) {; @' j$ v. K& C' N+ }0 X
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);. f! w% `  l$ u( x
//        rate = 1000000 / TICK_PERIOD;' N  W! e% Q! X1 R: F4 j
//    }
" r. }* _) P  ]2 `3 u: c1 g//
$ d% ?+ w" v# e/ u* Y0 z//" p* \6 \- w! Z1 A4 d
//    int period = 1000000 / TICK_PERIOD / rate;
" S* ?' r, `- v: Z3 \* B//
8 v% k0 ?: x2 J8 d: H& Q+ N! F//    if (! ad->is_running) {1 U0 n# j, J, M9 E
//        Error_Block eb;0 R; u  h' h5 _3 o
//        Error_init(&eb);
& y- X, s& l6 t7 l//
. a% ~4 E5 ?: M; S//        Clock_Params params;  q) d  A2 c. W& T9 L! y- D
//        Clock_Params_init(&params);1 Z, w9 @5 b: F" z; I: W5 ?
//        params.period = period;
. ]) C% r' o5 H, ?0 {//        params.arg = (unsigned int)ad;" j+ \( q: |0 l4 |# [+ p( m
//        params.startFlag = TRUE;, a( L$ N2 [+ V- V
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
8 ^; S7 Y3 F& o7 I. H2 D//        if (ad->clock == NULL)
1 Y# \2 R0 P( D  W9 S7 {7 o1 d//            LOG_FATAL("failed to create clock");
3 P5 S6 p( H- ?0 n2 o//# {4 ^  r7 C9 W& j
//        Clock_start(ad->clock);# R% z6 D; o8 [6 a* g2 S: o  H" F
//    }
7 P7 A. m7 s5 Y# ]( t4 q4 J* z//    else {
9 S$ m  R# Q9 o5 S4 e& ]) F//        Clock_stop(ad->clock);
$ C' P  R0 ^; f5 N# n( Y//        Clock_setPeriod(ad->clock, period);
2 d) p; m" M( ^//        Clock_start(ad->clock);
3 S: V' k  z. f2 f0 r0 k6 q- J# X//    }7 d/ z8 e, ^7 ?
. Q8 m/ p- g) a6 R" Y+ j
         // 创建定时器1 c5 B# s' L, C: K) W
            Timer_Params timerParams;
/ j& o, L/ P, p5 }# i$ E% B            Error_Block eb;
" U+ V( {; Z9 C$ [; o% ~( c# c) K0 t, G+ P. P- B
            // 初始化错误块
; `6 h' U  l2 g  V            Error_init(&eb);2 A( i  c: F6 X, B7 |4 i
            // 初始化参数
+ O4 `: v$ U! M; N9 O; z- F            Timer_Params_init(&timerParams);  ^9 S) ^8 E* |$ a( D3 U

" e+ h* M3 y/ p  P# g% ~            // 配置周期
; J. l; M) m+ G1 B5 W. ~, D; Z* m            timerParams.period = Period;
1 [8 M/ C& i, ]( K  _$ [. \            timerParams.periodType = Timer_PeriodType_MICROSECS;; e0 o8 N1 _! }0 x6 x: |

+ C! Z1 `9 k7 X3 x+ x            // 实例化定时器6 Y$ Q( g$ \* x/ s0 i; Q) s
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);' a( N! J" {  ?' A5 f( a
            if(Timer2 == NULL)& z0 N2 {( i# d* _) k
            {% \9 a2 Y, N: L. m8 M3 Y6 I
                    LOG_INFO("Timer2  not start。。。。");( Q7 Q& [" J1 g& V
            }& }9 O- S4 [: m! [8 `: J; `

4 y# E" \0 X4 v4 q            Timer_start(Timer2);
! \- _, a/ b: [8 F1 b7 N9 ?7 M$ ~  p5 x
            LOG_INFO("Timer2 start。。。。");
' u# i1 }& a( G8 Z$ R1 H7 f) A& g) R3 T3 |5 r7 ^( {- n5 a
    ad->is_running = true;
  h5 \( D8 R1 r5 {" \8 }}8 S2 t, S9 S: B

  `, [$ l, S- L( p9 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 23:46 , Processed in 0.036685 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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