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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
' O- ^5 P9 v8 L/ b2 {$ Z& t       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?# X, j  y% Y! f4 Y
2 J9 a( o3 D' m3 ^
  A2 b0 `; ]. x

; F3 F1 |& m" D+ ^
& u8 L5 J9 I2 _9 t& f9 G  D, y8 L( Q
void ad7606_start(ad7606 *ad, unsigned int rate) {
9 x  p- C5 ?9 V/ K  ?% i; x) V6 z% [$ X//    ASSERT(ad);4 U3 f' |3 B" i" g; u% ^1 D
//    if (rate > 1000000 / TICK_PERIOD) {+ k7 G. ?' O4 i- L& J! l4 x
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
9 k9 q$ ?$ ^3 T/ O9 ^//        rate = 1000000 / TICK_PERIOD;/ F' f' D' O- V$ @. [
//    }
: k; N% P+ ^$ i1 B  M//! o5 S3 D/ t; i. ?/ M, H
//
% M$ q, \& K  P/ W; h$ P# J//    int period = 1000000 / TICK_PERIOD / rate;" G# G5 \: ?& k9 D8 p. o) ^
//
8 o: @: P1 f, _* y$ L//    if (! ad->is_running) {" {1 o$ @6 a6 H0 N
//        Error_Block eb;
/ b8 I0 v4 w0 f//        Error_init(&eb);
: p/ [( Q& l1 e/ f7 |) g. K//* k0 ?/ g% x4 G7 P
//        Clock_Params params;
5 f1 d& L* B4 N  {' k! Y//        Clock_Params_init(&params);: E0 e" i+ u4 d. A' r. o
//        params.period = period;6 }( S- ?5 C0 s1 o1 ?3 o: v
//        params.arg = (unsigned int)ad;
  Z/ l% C3 ~) `9 @//        params.startFlag = TRUE;
' G3 ], ^6 j( v//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
5 K9 r6 N# h( ]4 a//        if (ad->clock == NULL)! P8 l; b+ g9 P' H7 L, o0 r
//            LOG_FATAL("failed to create clock");  `% [" `8 ?* T5 B' m. `# b. ~, e2 O
//2 o0 o$ R/ q, Q( I1 C5 d
//        Clock_start(ad->clock);) x2 n, B  j$ K2 {# d; c" y8 n
//    }
* m, O( X! s. \% O8 d' N8 r$ a' p//    else {9 m  ^2 W+ P2 j# q: f4 c5 Z3 F
//        Clock_stop(ad->clock);
% v' L8 H  }/ k8 W* v* C' R- G, H//        Clock_setPeriod(ad->clock, period);
9 l, ^# |, q1 w& T* K//        Clock_start(ad->clock);. x& E- d6 c  ?
//    }. C9 y6 W9 j+ s1 b; \
, S4 I  v; y; d6 n
         // 创建定时器
' p, d) g6 N" h5 D5 j            Timer_Params timerParams;! P( F( T- j6 Y' S7 K( |
            Error_Block eb;
4 F  D. u" q; w2 r) E3 g4 b( M; _" C
            // 初始化错误块' u/ W6 h: s8 L" l, O
            Error_init(&eb);! H+ B) j8 J$ N; \8 p
            // 初始化参数
* S) o1 {* K, Y, ^; X9 M! k  H            Timer_Params_init(&timerParams);
/ U" f" x2 y* C) D& z/ f! l4 |+ O: }. I4 B9 T* s/ s
            // 配置周期
8 I* |+ f2 z9 M3 e" ]            timerParams.period = Period;
: x+ D7 \( j. n) w, c/ h$ g            timerParams.periodType = Timer_PeriodType_MICROSECS;
4 n; D6 [* g7 V1 M! E- ^# J
! W* {- H" J8 ?5 E3 D+ ?9 k            // 实例化定时器9 j! T4 [* Z! n
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);4 o: a/ _( b8 U) w$ `/ e9 Q5 X
            if(Timer2 == NULL)
( R4 U" p% R7 c            {
5 ~/ r3 i& A. s* o9 f7 p3 q1 r                    LOG_INFO("Timer2  not start。。。。");
: T' ]5 V" ~+ }* N* H" p! j# c: y            }# e' _" k7 _/ [) ?) v$ H' c
3 e9 {+ B# D2 f$ h+ P
            Timer_start(Timer2);
( `- y) G( R5 i$ c) K& w# D- C; L* I4 N& r3 w) ]( X0 L
            LOG_INFO("Timer2 start。。。。");
% }+ m) s$ y0 Z- @2 Y1 c7 x9 ~+ a/ ]. i* X
    ad->is_running = true;
/ j7 @: e6 @! f/ ~+ H; c3 V5 x}5 t2 R- {& J; u) R  I1 v

) R0 p8 S3 U0 e, k
分享到:  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 11:02 , Processed in 0.038586 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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