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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:  b+ `$ F$ k( h* I5 b
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
; E, O4 H2 k& ^/ W
7 N; ]3 J( x' P/ C5 T2 T
% a% S# f- ]' J! a  D' u7 `+ C& H4 K- J  x7 _

1 K+ K- `# q0 C7 T) u& C3 ?! b/ l
0 a$ t0 h. ^0 E/ Tvoid ad7606_start(ad7606 *ad, unsigned int rate) {& e. `* s; B. b( \: ^0 i3 ]
//    ASSERT(ad);
+ W' g+ j/ i8 K# L7 ]//    if (rate > 1000000 / TICK_PERIOD) {
) d+ Z. I. @# l9 P  ]//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);* l9 X. a9 l8 O7 v, w) m4 D
//        rate = 1000000 / TICK_PERIOD;( o( h! ^: ~2 B& H! o' N! V) ~
//    }
& D( [+ M% H; r3 q- E//
- K  `2 L  o4 ?% {  ^' q; U//
# L) b7 a6 J9 q8 E$ B: L//    int period = 1000000 / TICK_PERIOD / rate;
# R  s9 A9 \; x* G' w  ~//
. B7 O7 e" w/ K' J9 {! [//    if (! ad->is_running) {! b. J5 X3 f6 q8 K/ o
//        Error_Block eb;
* J0 Z) A: E; S: Z( y//        Error_init(&eb);
$ t! N. ^( @) a- A) u* g//
9 B7 D# J/ j/ k# s5 o: Z//        Clock_Params params;
" `) j. w+ `7 n  a$ ?//        Clock_Params_init(&params);$ _3 ]% U# @" Y6 c+ E9 ?' D
//        params.period = period;
3 @& g: [. n  i3 P0 V; W0 V# W//        params.arg = (unsigned int)ad;  Q. T& x) B! B& R2 ]7 q$ c9 F
//        params.startFlag = TRUE;6 `0 z) l. _, E: ^+ O
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);( h* W* r) Z6 M3 d( a
//        if (ad->clock == NULL)
  O  N9 N" F# {' l/ T9 b/ u//            LOG_FATAL("failed to create clock");3 [/ r* y8 L" @
//
% i7 m* p$ h4 k! x1 T. V, L//        Clock_start(ad->clock);0 k5 m3 b$ {0 E
//    }: P' q- J. t& W. P: M7 |  \
//    else {  f* ?0 D, C4 v+ X/ w# f! I
//        Clock_stop(ad->clock);
  y% B9 i( {% O! Y. B0 }//        Clock_setPeriod(ad->clock, period);
: M8 j1 }' h$ p$ t//        Clock_start(ad->clock);  p) |! P, E3 X) D4 _. ~4 u. _
//    }( i  k1 D) ?) k! j
% m! S# s2 e# {  |# y8 D
         // 创建定时器- _0 @# S$ [2 ~6 N
            Timer_Params timerParams;- f: s% G- P2 ~$ a3 @4 g
            Error_Block eb;4 a5 W' x4 B$ V3 l, ]

; ]* h" O# Y- s& a6 L            // 初始化错误块
1 t& f4 [3 }5 J" k- m" f% i            Error_init(&eb);& }9 z: L" N8 @/ [3 a, \; `- _$ l
            // 初始化参数% i$ ~# j! G2 P' D+ ?4 [: p2 ?
            Timer_Params_init(&timerParams);
& l: i9 N# g- i- z. o' r/ F' x. h5 _2 m2 M4 t6 r7 Y
            // 配置周期
  V1 r" P& D- |  `) Y% B            timerParams.period = Period;% P- A6 W: H! n+ B2 c7 N% T
            timerParams.periodType = Timer_PeriodType_MICROSECS;
1 O. v& m% h% \* r8 m
3 t( ^. B. t6 G5 i1 D            // 实例化定时器# c7 U/ `7 ^; ]  }* F! J1 ~/ o
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);5 M1 m* w' N" ?9 e% ]/ F6 T
            if(Timer2 == NULL)& P- |0 ~/ C" U5 h1 N' z3 n# Z
            {9 Z% }- v" m5 ~2 S( ^
                    LOG_INFO("Timer2  not start。。。。");0 ^% E$ U, a& c$ j" b
            }+ \, r) M; B, M, ~* N
$ p5 `  `) p. U0 ]' H  a8 X
            Timer_start(Timer2);: h7 V4 c# v' R
4 r- }+ j# F- P% v
            LOG_INFO("Timer2 start。。。。");
# W3 d" f5 D6 X4 D6 [1 P; h/ B; D/ _$ b) w; J+ R8 w: j7 @
    ad->is_running = true;
2 U3 m. t) p! Y4 K}
! t( `: N, m4 q+ k# u4 l# r. r  {- H
0 D0 O, C# W, R# \! I! r. ^8 J
分享到:  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 08:17 , Processed in 0.039128 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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