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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
% W/ p5 m5 }8 f- [       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
3 k2 v5 C( f- ^4 v. `. R0 G! ?& P* `* A
+ K7 L2 D  O% J8 p! M: B
% c& G; X9 s' f% ~, w. J

1 I# ]* A4 M. m  \" ^1 d; T( Q6 F& ~1 {1 d  o
void ad7606_start(ad7606 *ad, unsigned int rate) {
- T! ?* f9 I" I: U//    ASSERT(ad);3 O) |  R, K6 r7 ?" B) [& o
//    if (rate > 1000000 / TICK_PERIOD) {- G- u$ q) b: Z6 a8 j8 t3 ~
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
/ A8 e2 n- x$ F6 j3 w" |//        rate = 1000000 / TICK_PERIOD;
/ v  x2 G; u/ P. j" `" m0 s//    }2 h- R4 x/ e; ~9 l/ \
//
. }; X  y) _6 D+ v8 S9 }//3 ^% p" A# `9 V5 M" q6 _. ^- s
//    int period = 1000000 / TICK_PERIOD / rate;
" _+ I! u* {, {% _- \//4 b9 y2 U! [3 v: d- O( X4 o& X
//    if (! ad->is_running) {) Q/ m0 p" l/ v! S# A
//        Error_Block eb;
, X6 D, b; M0 A/ s//        Error_init(&eb);
8 c+ I7 o; A( G2 \& u: _//
' a7 u$ Q" M9 U) p//        Clock_Params params;
! Y. n  G0 d, e( `9 P# I! O//        Clock_Params_init(&params);
: c: G8 x0 ?# Y& G  h1 a! L5 `+ ?2 W//        params.period = period;
2 ~, T( u6 Z* E% T- p, v- M) t//        params.arg = (unsigned int)ad;3 x0 c  l: k# f5 F6 S- s% `4 i
//        params.startFlag = TRUE;
/ a" P7 J& v( K//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
# h6 v/ f# Y; t8 t9 e//        if (ad->clock == NULL)
1 E2 q$ M% S! s8 J: b* t. {//            LOG_FATAL("failed to create clock");  Y; C4 N# W0 ^
//
4 K& O" P3 t1 W' G/ z* u" v3 V//        Clock_start(ad->clock);4 V; b$ z3 G+ T- i- e  t" h+ L
//    }
, n; J8 n  K, o( ^" [/ U% Z/ U! g//    else {) O% L8 ]5 _. A
//        Clock_stop(ad->clock);8 v8 m( z  d* P5 H4 q4 |  i8 d% n
//        Clock_setPeriod(ad->clock, period);
' ], O" _! n! I//        Clock_start(ad->clock);
$ T8 I/ M' |. R* i% Z1 ~8 [//    }& }6 H& G3 w" ~* Y. E

# ]3 r; i$ m$ ?! h9 P* _4 s         // 创建定时器
) z# Z2 ^2 j5 j/ f" ~% }" c: E            Timer_Params timerParams;" W  t8 V, z) \" K( c
            Error_Block eb;
2 i5 d8 o  s: k/ B) R  X5 {' i8 B$ n8 k( y
            // 初始化错误块
. L. _7 d. H# C4 a1 M            Error_init(&eb);
3 G" N1 T! y! V. f/ `5 N5 C            // 初始化参数% D8 T' \* l' D# t( S
            Timer_Params_init(&timerParams);
9 e! w9 j0 s6 g- \! M' J" F% J
1 ]- z0 Y0 n4 F" w            // 配置周期3 a4 |. E! F7 T4 K
            timerParams.period = Period;
  G& u# S/ x& j  O3 @( Z2 ?( T            timerParams.periodType = Timer_PeriodType_MICROSECS;
' N9 a% O/ n0 Y9 r) h9 f+ v- v, B0 {% Q/ F
            // 实例化定时器0 M3 B& l1 ?' J6 |& i: x' k, a
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
+ F) O5 J: v. U, X" f            if(Timer2 == NULL)! E* W/ J) N6 C$ N! }% X
            {( H9 o- {- L6 H# B; B
                    LOG_INFO("Timer2  not start。。。。");/ y( v. O% f( M. F; [, Z1 U' p
            }2 g9 R5 j/ C) C" D

2 D9 ~& s/ X1 \, @1 c$ G            Timer_start(Timer2);# s3 L5 b) ]' R- J0 b& Z2 k: u, R% P

- v/ X. S- |9 w# \            LOG_INFO("Timer2 start。。。。");6 Q. t" s' @: t& ~) Y

/ f2 P% K) V9 ~- R    ad->is_running = true;9 W! B! c2 }+ W" w
}- }  L; [% {" U# `6 ]
% B- k8 j5 n1 ?
分享到:  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 22:12 , Processed in 0.036140 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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