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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
9 n" E; B2 @! D       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?" ]4 n5 i: p9 Y. d( ?$ I& x8 K( c

. R7 {6 q( q/ g+ y5 _9 ~0 `8 N; z; F: I% B& |- M2 m2 P6 k
. V* ]0 ?, [) L; X) d8 Q2 E6 k

* C( T  E; B* M% T; x$ C5 Z" e. y; f! K0 t4 Q; u- t+ ^7 q
void ad7606_start(ad7606 *ad, unsigned int rate) {
4 t0 ~' X5 B! Q# i3 l6 }1 ]: {5 C//    ASSERT(ad);
6 u( Z# P5 R4 F' k//    if (rate > 1000000 / TICK_PERIOD) {  [  h) r  r. \- Z. T
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: c2 }5 p1 ^7 L//        rate = 1000000 / TICK_PERIOD;3 i7 V" v. ]* [2 T. A
//    }
! M9 w7 Z6 |6 R//
3 m; {+ }6 x! J, y+ B& [2 S* ^& y//; ]* ~/ e8 ?+ Y% ^
//    int period = 1000000 / TICK_PERIOD / rate;5 D! [, r) i. v3 B, `! I
//9 V9 v1 p( E0 @: t' p$ g% i: E
//    if (! ad->is_running) {% J! K/ F$ x$ p, j1 F  S
//        Error_Block eb;# ^" t; u  ?, w, n* L* w
//        Error_init(&eb);- J: M/ d: n$ ^: I5 b5 y
//, V, Z4 ^$ \8 [' {- W- N
//        Clock_Params params;; i' j, N+ ?1 m3 e7 z  O
//        Clock_Params_init(&params);& u3 j' c2 }8 H4 i
//        params.period = period;
, u2 v6 U) J" G+ x/ t//        params.arg = (unsigned int)ad;1 h9 y+ i7 I. ^# R" l$ D
//        params.startFlag = TRUE;  X: C3 q0 s4 k/ w9 y3 z
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
; v7 i( E: s8 }8 J//        if (ad->clock == NULL)# i% M* ]( s9 G! \; R
//            LOG_FATAL("failed to create clock");
  G, D' f, e5 T/ s//* O8 L3 c# X5 s! \7 z7 B
//        Clock_start(ad->clock);7 M, S( w- p( S7 _" f5 I* h
//    }# b, T/ o/ V- V1 _& J  t9 [
//    else {
& ^4 u$ e2 D: T0 x6 j4 u; H$ e//        Clock_stop(ad->clock);
" o; A, F+ H) t//        Clock_setPeriod(ad->clock, period);
5 A7 w# s6 Q% j  k9 E7 J4 b//        Clock_start(ad->clock);' Q6 d0 \6 d( B/ @0 q
//    }. y% |( h. f1 z+ c2 j, F

3 w; _$ E6 y4 t         // 创建定时器! h7 T& {* w8 U6 S% x
            Timer_Params timerParams;
1 }/ J2 Z1 n6 t            Error_Block eb;
1 M" q! d4 \' J  j$ K0 P
' G0 `' o; o. F2 a3 @0 @& k! \- {            // 初始化错误块
0 `: C9 A2 k; r3 u' t            Error_init(&eb);
5 Q6 P$ h" t; ]' n' E0 W            // 初始化参数
0 D6 [9 V" r9 t2 u            Timer_Params_init(&timerParams);
1 |0 _, R4 A7 s5 H3 s% B: q+ k  o) e
            // 配置周期
: F- d0 @( l1 h$ S* X            timerParams.period = Period;% g  G2 a/ K  g" G
            timerParams.periodType = Timer_PeriodType_MICROSECS;
: {8 `+ {* Y: e1 `1 \: e, v2 i$ i2 Y' k- Y
            // 实例化定时器
7 s9 D# X) k$ E5 F* _9 P5 m            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);5 h7 B: a4 M% G) Q' H& a( l
            if(Timer2 == NULL)( a" o  ]* P5 S1 Z
            {6 \, ~, P8 v7 `1 Y
                    LOG_INFO("Timer2  not start。。。。");. j5 c' ?" Z0 P! e8 _# O7 @4 O! x
            }
5 x  Y2 d, `* s; g* b7 I2 V/ {. ?8 T
            Timer_start(Timer2);
" ]  r# K: e+ E4 p7 w1 h  J0 q: V' @6 o. c2 {  O
            LOG_INFO("Timer2 start。。。。");
4 x: [9 |0 F" Q. r$ d  u8 _
. W3 N* x0 S( M  w# P5 s9 [. a% m. w& e    ad->is_running = true;* O+ X. |4 q' S% U4 _0 A
}
% v' `/ T3 i) \7 Y' Y) Y& A; {0 C: i2 U; d. E  C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-5 19:17 , Processed in 0.035862 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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