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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:1 ]5 k9 Q$ ~  ?) C) [; h$ Y. Q& A
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?& e4 o# n5 K; N! Z7 g4 f: ]
6 ]; G1 K* T2 z0 K
% e2 Y) s* T3 @% {4 C0 P/ W* C) @5 h
: X5 k: q6 ]6 t- K3 V1 S  k1 N
7 h% I' a+ ~0 x' U  ^

, @" ^4 E" `  ?5 ?# ~: o' o+ F' C- \void ad7606_start(ad7606 *ad, unsigned int rate) {
+ Y7 R: Z* a: Y( d( f4 x, [//    ASSERT(ad);
' j2 Z) v8 C" M  [; x//    if (rate > 1000000 / TICK_PERIOD) {/ \( z/ k% I0 z
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) @9 c# y4 L  S//        rate = 1000000 / TICK_PERIOD;
5 z2 V6 ^2 F2 ^' O+ y8 u8 }//    }
# c# e6 E0 a5 B( [- E//
* g& Y2 {; A) {6 v* n//3 \* q! z0 }) ~7 x1 t% D. A) [$ l6 w
//    int period = 1000000 / TICK_PERIOD / rate;
' H, w: P1 I  K' D//0 g4 E; G1 W9 U/ l( Z
//    if (! ad->is_running) {8 ^% V. P" n1 M/ ^
//        Error_Block eb;" g, g5 B' P! Z, O+ T0 l
//        Error_init(&eb);! m1 Y+ y7 y7 H# w+ N
//% u8 ^( P& a% _% Y+ y; q
//        Clock_Params params;
4 Q# m/ J/ k6 v; z//        Clock_Params_init(&params);( Z! q, X) |! g
//        params.period = period;
# K" d* n- j) A0 o, Z  a% k3 U//        params.arg = (unsigned int)ad;
- ~# ?0 k1 n% C% ]/ K//        params.startFlag = TRUE;
* S/ _+ T5 I. {% {//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
" D  q! y" Y. [//        if (ad->clock == NULL)
* \$ T. V& k5 y! h//            LOG_FATAL("failed to create clock");
( [4 J6 |8 k9 b//* q) [2 l; r+ s% w
//        Clock_start(ad->clock);# d/ N& s0 X2 d
//    }
' L9 `9 c4 W% u" k9 \+ j: I, G; F" b/ J1 B//    else {" s$ k& T$ `0 {7 }0 u
//        Clock_stop(ad->clock);2 a8 x: j* O/ V0 H' I' s
//        Clock_setPeriod(ad->clock, period);
3 R; d( U1 }  w7 {2 F6 ?//        Clock_start(ad->clock);  |4 o3 G" ~% f8 g4 X( C
//    }2 T; L  a4 B2 X) h8 ?2 X9 I" h

" D/ Z5 n" l7 [         // 创建定时器6 w9 _2 t* X# T, Z" y( e
            Timer_Params timerParams;; e9 E' M, T4 E9 x; S
            Error_Block eb;# F% j! j6 i- \9 N" v" w- e

& E9 I0 z7 H, @5 W8 [: X6 b            // 初始化错误块# m- U: @7 i5 S* ^- ?
            Error_init(&eb);! P/ c8 Y9 e9 @* I9 e  a
            // 初始化参数
- m9 x2 S. N% r/ }& n2 V            Timer_Params_init(&timerParams);( H- f, }  q3 X4 i5 z8 h% D

8 N# d/ N: \# P2 s, I            // 配置周期/ L  r) m' x0 Y
            timerParams.period = Period;. R8 f$ V4 U$ i7 B: P; k
            timerParams.periodType = Timer_PeriodType_MICROSECS;0 l' v% ~  |) n  X+ `

1 [; z. s3 e0 ]            // 实例化定时器
+ M9 I; i  y6 d0 M+ r7 K! e            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
6 R) v5 M, i; G) ~. e$ p& i            if(Timer2 == NULL)5 t$ I% f/ }# r; }1 B
            {+ C1 W- V( G1 V, r+ y' s4 ]1 F
                    LOG_INFO("Timer2  not start。。。。");8 M0 s2 h3 z% e% d8 t, o
            }) _9 j- e6 t. n2 Z* i" E

" X' H0 E. T6 c( h7 v. y. w& ]            Timer_start(Timer2);
, A) `- p. k9 F/ n5 Q
7 Y# b2 t* k2 H, C! ?            LOG_INFO("Timer2 start。。。。");
/ V! [$ D/ i7 r. }4 a9 ]- S* S7 l  F! d# ~+ l& e: |3 I
    ad->is_running = true;
% C. G5 w& \. U8 h: U) R! b3 P}
, O% ?  Y1 k7 t+ y2 Y4 H, i3 c9 a& ?$ z, z7 S& X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 08:13 , Processed in 0.037338 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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