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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
5 R( Z/ b9 K% I$ C       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
) u, H9 I! [& `, ~3 o: j
9 @/ C7 c6 A, b: G7 A. c0 S7 R" b! b1 Y' i
3 F* b' r" c5 Z2 ?, G5 ]4 }

! E# M3 M% g% ]. @1 v6 p. E' q$ m( Y
8 J/ }/ x+ v5 S) e& U% l, \void ad7606_start(ad7606 *ad, unsigned int rate) {) a9 u" J4 ~* ^1 R& s) C& W8 K4 _
//    ASSERT(ad);: {( T7 b: r" m$ n! H8 I; _& Q, X
//    if (rate > 1000000 / TICK_PERIOD) {
) N' L7 @7 p8 f//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);; [7 f0 A! V6 m, B0 U
//        rate = 1000000 / TICK_PERIOD;: q/ d) P& @, A: q* A- e9 i( X
//    }
0 x" q9 u# p) r1 x8 I/ C//
# Z9 C& J" K* q//0 O0 s! W# j8 h5 W1 o
//    int period = 1000000 / TICK_PERIOD / rate;
5 d. f* R1 e1 _4 H//+ [% ]: x7 T$ X9 _2 B
//    if (! ad->is_running) {
: [2 z# {! f& v//        Error_Block eb;6 u, d) l1 t( f3 S
//        Error_init(&eb);' w; b, P: W$ h* g
//4 \6 j) ]$ r9 S) O4 P! t
//        Clock_Params params;' h* u2 o* ?, q# _/ G/ ~% |4 G+ Z& Q
//        Clock_Params_init(&params);
; {4 Z% j2 _. O( K% r//        params.period = period;  ]4 A' I7 x1 U  B* f: r
//        params.arg = (unsigned int)ad;7 u# J0 Q9 F+ Q' U
//        params.startFlag = TRUE;. j% {& N1 T3 p- m2 h
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);( c$ B2 O2 z- k; I
//        if (ad->clock == NULL)& X7 K! }1 T$ h
//            LOG_FATAL("failed to create clock");8 n+ O4 ^7 x# [% s1 @2 f
//
* O% Y; O" K8 h' n//        Clock_start(ad->clock);
! ]5 D( Z# e3 k$ X" Z//    }
, B$ n' r4 O7 J+ ^8 i; z//    else {6 I8 f1 t; O4 n5 e) b
//        Clock_stop(ad->clock);& F8 X1 W6 B. K" X( s0 W& l
//        Clock_setPeriod(ad->clock, period);! A' P+ }9 C: z
//        Clock_start(ad->clock);2 Z+ g) s# E3 J! P
//    }  {9 c! D4 k& [! g9 e
5 e3 W. N9 D! Q; H9 y4 R0 c9 X
         // 创建定时器" X' i0 ^# Z. n0 H
            Timer_Params timerParams;" Q& T, m( h5 v9 p! J# m) T
            Error_Block eb;
: z# J% ]9 p5 r+ G4 m1 J7 i* `5 x+ a: r
            // 初始化错误块
! e! l$ ]8 x; ^8 }+ g) v+ W# I            Error_init(&eb);! l# B. c0 }1 ~% N; Q- _6 t% g: D
            // 初始化参数5 b3 o; P1 j& Q9 M; d! J
            Timer_Params_init(&timerParams);
) F3 [, U9 O/ d- C
  p  k  M, d# O, d/ c, ]            // 配置周期1 _* u% g3 x% H, B
            timerParams.period = Period;( j' g% y; _( N( E" q* ^; g
            timerParams.periodType = Timer_PeriodType_MICROSECS;
+ w- a+ ]( a$ J! D  W; w( U2 R8 A4 R$ |; v: }# f. ?
            // 实例化定时器  a* K2 ^1 o2 K) f: i3 c0 M
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);; {: M  x5 S! W" c7 z
            if(Timer2 == NULL)$ {- C6 r& L$ P% N2 V5 A
            {
2 t& E, _1 Y3 S! I! w                    LOG_INFO("Timer2  not start。。。。");
0 k9 X) k9 b( J            }& H# y$ P- r' O8 ?! f7 l7 }% n
9 j# `) ?( M( N4 a$ h9 o% L
            Timer_start(Timer2);
' N- U3 j5 F, ]( S
+ B5 _9 ~4 P- _9 [; a$ D            LOG_INFO("Timer2 start。。。。");6 Z- f  X% a1 }$ [% C5 l, h

+ f! b" N4 u5 h2 T# n# O' _    ad->is_running = true;
4 N0 Z- b, u0 W2 S. V  M6 ^, e}" K2 y+ c) W+ U0 O

7 B* j- e. N0 L+ j& j3 ~
分享到:  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 20:44 , Processed in 0.037668 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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