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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:, V: w  F4 [5 o. i9 j  S( M
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?9 b4 ~9 I; K, s8 x0 i
* W* L7 p1 F& x& I4 g
" t3 f* S) N' W" O9 g; z

8 q. w2 m  ?$ G3 \2 T& y# }% {
# g7 H2 `5 C# N! Q) H( ?/ d+ q0 n/ ]& ?  J3 G9 i; |
void ad7606_start(ad7606 *ad, unsigned int rate) {. ]& T1 s9 u6 l; s  y
//    ASSERT(ad);) Q, e) f. M  j" o! r' }8 J  {) {
//    if (rate > 1000000 / TICK_PERIOD) {) T: P# g2 R" I* F) [, U) N
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);6 ]' @+ u' U1 t, K# N3 z" v( F) t
//        rate = 1000000 / TICK_PERIOD;
9 v  Z5 H  `0 a//    }. e; c# w" Z( o' s% j
//
* j8 c& k. i5 U& }& R( \//
7 ]' }/ ~6 a9 a% Y0 y# [; s/ ], i//    int period = 1000000 / TICK_PERIOD / rate;
( T  l5 y# X$ ?//
/ N* a! U6 a% n4 v) A; ?! o//    if (! ad->is_running) {/ V  u$ b% B' L4 Z
//        Error_Block eb;
- C8 y2 j/ {7 E( N//        Error_init(&eb);
9 @( w' h: O' d, }1 m//' L  H: E6 m9 r5 _
//        Clock_Params params;
  F( Z  p! K! Q+ |0 s, V//        Clock_Params_init(&params);
; x8 W0 B6 R( A7 @//        params.period = period;4 s! n. d$ j0 t! x' Z( f8 g
//        params.arg = (unsigned int)ad;
1 P; B1 f3 f4 @" P' V//        params.startFlag = TRUE;/ ]" O( U& j6 k  Y+ g1 K
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
* t% g% p( x6 o% O( R//        if (ad->clock == NULL), a) N) @; ]: l2 o# [# I1 j. r
//            LOG_FATAL("failed to create clock");
6 Z7 f/ d- M& L4 G, e: N: d//; m& T8 J3 Y3 K" Q- y: U
//        Clock_start(ad->clock);
8 w; F- R  F) P' f& M//    }0 n% e! I" M! C' w
//    else {' H. B# Y+ O% k' N. z
//        Clock_stop(ad->clock);
( c0 [9 v. T. f" {- c//        Clock_setPeriod(ad->clock, period);
6 q! J) u* i0 n1 M//        Clock_start(ad->clock);
- V2 T5 z* B- _0 Y* }) q8 I# S3 A//    }
& v/ F% ?4 \! z* ^
3 {' B+ _6 X( s6 v8 ^# |         // 创建定时器4 q& L' }& ]: ^" G7 e. G' d+ j% j
            Timer_Params timerParams;
1 ]4 L* B+ a1 L: @            Error_Block eb;% k* t& F  o" M
* V) v! l% H5 e5 j* x
            // 初始化错误块
  o3 Y6 X5 q& T( ]            Error_init(&eb);+ @& F( W1 H  r! u2 _$ O* @( q) \
            // 初始化参数) K* U  [( `# r3 p' g
            Timer_Params_init(&timerParams);
, x( v# R$ _4 i% X& n2 K1 V7 Z; N' I# w5 f% x
            // 配置周期
/ K) ^3 i: S% X            timerParams.period = Period;
) O& K& ]  Z. ^( Y5 j            timerParams.periodType = Timer_PeriodType_MICROSECS;
/ I7 I2 A3 i8 W: l8 s' D7 F' n" {* U7 O; |
            // 实例化定时器5 T+ V2 ~2 u6 ^$ h; |7 ^  P
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);" k, I1 V# H% _9 s
            if(Timer2 == NULL)
  d: `4 f' C* o% @, I  d9 R) ?            {
  U3 v4 b2 N) r6 G( S                    LOG_INFO("Timer2  not start。。。。");2 {4 ]$ S; `) f# O% S0 Q
            }
. p9 U; x' C; g! _+ i! K
9 I7 X5 j% w$ v            Timer_start(Timer2);
; |: y, Z& p- W
5 [0 x/ I7 ^' v) G- J            LOG_INFO("Timer2 start。。。。");$ t4 M% D) Y3 Y% M. j
. F' q: _' K4 H: j4 I4 e7 {
    ad->is_running = true;+ m) J( W: H" X- c! Q
}
' J' H% t" Q' T- Y; T; I' g5 h3 ~  e- L
分享到:  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 09:27 , Processed in 0.036486 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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