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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
8 S8 v. I4 B  c& [4 U$ a/ |       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?; u$ n* V/ `# T. O; Q

1 V7 q, v% ]. R5 @7 x( z6 a5 _. S6 {, `; n  x2 `, |2 O5 |

& K' J9 Z, S& J/ \$ q1 a7 M8 r, Z; O0 P# S8 s
7 V" p9 f, P/ s# a; t
void ad7606_start(ad7606 *ad, unsigned int rate) {
$ O' Y* p* v. {) c. T* h( A2 B; U//    ASSERT(ad);5 o; G' o9 u4 V2 @
//    if (rate > 1000000 / TICK_PERIOD) {. Q8 _: R, b3 i, W" d5 }) S
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);# ?4 H9 S4 {' J
//        rate = 1000000 / TICK_PERIOD;
! x0 b3 K0 [, \5 h8 S//    }: M+ K- A/ ~6 Z% I$ H
//3 K# r; }3 W# `& S  j
//
. t4 |$ X6 C7 M4 j" A2 _//    int period = 1000000 / TICK_PERIOD / rate;
" D6 O1 Y5 C/ T" U. }//7 z% F0 V1 T. }8 e5 T
//    if (! ad->is_running) {( M4 r* r7 l1 x  X) U" q
//        Error_Block eb;
# I3 K5 U! y* x  G% N  G$ d7 X! X//        Error_init(&eb);
: W6 e) t. Z. p! F8 I//
' ]. q0 G8 G2 I/ s//        Clock_Params params;
: N% q- D8 X. D; [* _3 T* y0 z6 s, D//        Clock_Params_init(&params);
. h# M; Z/ j; m//        params.period = period;
8 j9 f! F; i& l//        params.arg = (unsigned int)ad;9 ?3 p# Z6 }5 i+ F) [* z
//        params.startFlag = TRUE;. o9 j% i7 O/ S# p# j* T$ y
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
  b+ o6 z! q: {) E* C* a//        if (ad->clock == NULL)7 _" l" \; Z8 \/ z6 F( _
//            LOG_FATAL("failed to create clock");
( o) m4 G: |' }" f//
# Q) |( z; j6 w; ?//        Clock_start(ad->clock);; v6 m+ p+ X7 {0 W2 t
//    }) ]3 O! X. z! M0 h8 T
//    else {, i; u- b  ~1 o
//        Clock_stop(ad->clock);
; M4 N6 x4 w& X; _9 j//        Clock_setPeriod(ad->clock, period);" I% M; ^4 [/ b% K5 L. J" W/ y+ ?
//        Clock_start(ad->clock);
* m* M; f5 l7 l5 B4 {* {//    }
2 l2 H4 r1 x/ T0 I' I0 u$ @6 f
1 S4 p2 H8 S, ~8 i3 D4 a         // 创建定时器
1 b: M  x- W/ I& [, Z* C            Timer_Params timerParams;1 U5 e: M. T; {
            Error_Block eb;1 z: h) b: ]  _/ v. h) G/ [

, b: D  o* K4 B; z            // 初始化错误块3 E  H7 w+ j( [. ]* P- V
            Error_init(&eb);& v0 k  k* _9 |0 K
            // 初始化参数
- E! r/ v, [( o% H" ^8 b            Timer_Params_init(&timerParams);
6 W6 _& ]+ ?2 F1 g5 c8 f! T2 x0 M* w9 V
/ }" u/ o5 z) n- \            // 配置周期
; d0 U4 n2 h7 T3 x            timerParams.period = Period;0 P, P4 i6 u7 `
            timerParams.periodType = Timer_PeriodType_MICROSECS;' G+ \6 e: U+ M7 g9 H! g

& W: V; ^4 A0 s* t7 t8 I            // 实例化定时器% B+ j" A' s9 \7 g$ `; x' d( O  K- X
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);0 L9 @3 f2 }: d: J* a2 y4 |" T0 y
            if(Timer2 == NULL)' v+ N* B' I$ @  q. D' P
            {( c: u  f) `0 C, l
                    LOG_INFO("Timer2  not start。。。。");
& E* n- Q; f, ^( \) U3 a# @4 Q            }0 Q9 ^: R  f2 g; {

7 @; H/ M8 I+ ]! W) ?            Timer_start(Timer2);9 m9 |3 \) i& {2 f) r; o

( I6 E9 e, u$ ^" i            LOG_INFO("Timer2 start。。。。");
/ J* T! A/ A! t& }, x0 q3 P/ G, S; L, r( D' K, Y
    ad->is_running = true;
" B9 V+ _3 E( m$ u}
( ~4 h8 I6 P" F0 N) x/ U! y, n/ D$ e
分享到:  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 18:01 , Processed in 0.046526 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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