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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:$ w9 u1 j! S! U4 [8 w) x; `. v8 b
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?2 F: O( b6 {7 u1 e' r( Q( t2 B

0 X* a# z3 s9 w  O2 z4 L- b% o, f  \1 Z) l

6 G. d1 H6 K& e" X) a1 i) ?9 N' J' g% C) m8 x: I. v! u" s

9 N; J: i; M9 c( Rvoid ad7606_start(ad7606 *ad, unsigned int rate) {
6 K, F/ y' X# C/ l//    ASSERT(ad);6 C& T+ C# q' I5 _" T7 x; C
//    if (rate > 1000000 / TICK_PERIOD) {8 `$ L: a/ o0 `5 e9 ]5 ~# F
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
$ J1 M3 k6 h, y" `$ Y//        rate = 1000000 / TICK_PERIOD;
  F: |5 f0 i3 O4 p# D! U: T& M, v//    }
1 F* A: I6 W9 y//; w+ i) C* \  ?
//
. _$ G4 i7 B* D  @7 @//    int period = 1000000 / TICK_PERIOD / rate;5 p, R$ _& A) }8 \# Q
//- p, q2 i- J$ h( w
//    if (! ad->is_running) {) B* ~  u+ k9 c5 a: a# t/ t
//        Error_Block eb;
& D; R4 e6 {- G//        Error_init(&eb);9 b$ S8 f* ~1 u& V; {1 F4 M
//+ d( f8 {' \6 ~( ~* |3 N
//        Clock_Params params;
  g* W+ M0 R& i//        Clock_Params_init(&params);
0 @6 Z9 f9 J6 ]//        params.period = period;
1 t% H3 Z+ p6 l( G9 y% `9 N5 w6 F//        params.arg = (unsigned int)ad;  }2 D% o% _/ z- e. i: ]! e& v
//        params.startFlag = TRUE;. U' R0 H/ M/ |+ T# \, c/ I
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);8 S9 w5 ^4 }& c4 |  g! f1 j  l
//        if (ad->clock == NULL)
7 ~2 ]- s7 Z* x9 d2 f" H2 x" b2 z, h; e//            LOG_FATAL("failed to create clock");6 r1 N4 s& ~) Y2 M
//7 f6 o6 Q- l/ r. P( i. Q* Y4 g
//        Clock_start(ad->clock);
: R7 j, e* u) M! g- H  d! F//    }4 d9 u% q8 E0 y
//    else {. X% }( K6 c: w0 K. m  N( j
//        Clock_stop(ad->clock);; H9 a: k' s: {- G8 z
//        Clock_setPeriod(ad->clock, period);/ K& {0 l+ c& n1 o1 ]2 F! u  |: T
//        Clock_start(ad->clock);' @0 S* H; h5 _* U" ^* Y& v8 M
//    }1 C8 `- @! L% b& B4 ^

7 U9 |/ L' Q8 D0 g         // 创建定时器
0 W! o# S' J# m6 U( ^4 s# f; c            Timer_Params timerParams;- b3 y. d' z7 o- ~
            Error_Block eb;
' J. l% C/ c9 u1 f: |
0 o+ G; M4 W: V7 Q            // 初始化错误块
3 e9 S, W6 }& ~( y4 h  j, s            Error_init(&eb);- l+ V( l) P2 b* [
            // 初始化参数
! n5 v- v. ]+ u            Timer_Params_init(&timerParams);
0 J0 w8 w3 o- i% B" ?7 Z, [8 V( O$ m
$ M0 P& e( ^# [/ J8 N/ P" g& F" o1 A            // 配置周期
$ Q+ x* n" Q. @" L            timerParams.period = Period;
6 E8 d7 n2 N& Q9 O            timerParams.periodType = Timer_PeriodType_MICROSECS;
: \" J" @5 B7 y- `
2 f$ K9 e! ~6 k            // 实例化定时器6 c: d, C) f& g# w
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
! d" O: T/ c! D% h            if(Timer2 == NULL)
6 h4 N/ D# I1 s( F            {1 P; f$ J5 f% g) y% i# C
                    LOG_INFO("Timer2  not start。。。。");
/ `$ c. V9 A0 C% e9 b" r            }# l% H4 o+ ?7 b4 M: v' W& d: L
% u3 w- [8 w8 f& ?" r! z6 {# h
            Timer_start(Timer2);; I; A4 z& {" Z- n
5 @8 w) [$ ~  z* R9 r0 v: R  r
            LOG_INFO("Timer2 start。。。。");$ [, u7 E1 |7 Y( Z4 O

& f' D& l2 h4 {3 v# X    ad->is_running = true;, f& {. v; q* Y4 Z" I; {# x
}
) n5 u: h5 |  H! N( Q; _5 \" r1 d  A8 U$ c# N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 07:11 , Processed in 0.046144 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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