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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
$ H3 B* ?& x+ l" h! p$ u! J       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
5 S  \$ J4 `+ Y! x8 Y* U. B) M4 Q' i* W6 {/ i

$ l' h) ^+ n4 O0 G7 t- P9 F: y5 I
$ z0 U0 L1 d7 m; C9 F8 W- @0 o" q" Q) ^6 ]1 Q0 X5 K
4 Q: C& m, Z' F: R, E1 ?
void ad7606_start(ad7606 *ad, unsigned int rate) {
7 W: X; T. B& F) x3 b" i//    ASSERT(ad);0 j( r* H& s  t, t8 i
//    if (rate > 1000000 / TICK_PERIOD) {
' u# o4 h/ S: o, T; w$ L" D0 z" n//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
0 f$ b4 R- E8 ~1 T//        rate = 1000000 / TICK_PERIOD;
/ A% a9 L, K5 c# M8 L: f//    }
) I, r; c9 n- r//
& s, h# ^' X) A: N//
! X( h1 j6 N' h) I1 X//    int period = 1000000 / TICK_PERIOD / rate;6 L# R9 p) j0 v+ m
//) {. n" t4 I; H6 s; L& I
//    if (! ad->is_running) {$ v1 N0 j7 s, N0 i
//        Error_Block eb;& p; I& x: Y! E( R) Z+ N/ W* t6 ]. t& [
//        Error_init(&eb);
  Z! g' w% d* M' B) T# R) |$ k//' v4 u8 a3 F5 h
//        Clock_Params params;/ g' v! W4 n: R) j9 t
//        Clock_Params_init(&params);2 d* P! T& v; x1 Q7 x! K3 K
//        params.period = period;. Z% H% t1 h5 ?4 f) b9 g, g
//        params.arg = (unsigned int)ad;- f( `  l- {0 n+ y3 [! A3 g
//        params.startFlag = TRUE;7 _  T4 f& `5 U! L; b
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);. }* P" @2 ~, x, P5 f% T$ `4 Y. C  a
//        if (ad->clock == NULL)6 \0 c) u+ q: Z0 d
//            LOG_FATAL("failed to create clock");
4 \4 _: Q; \) `0 B8 F//5 _4 C% F; j5 V
//        Clock_start(ad->clock);# o8 [3 d# J0 N" X$ b2 d& w
//    }
) s4 Z' i* Z% ]//    else {
5 ]; E. d$ h* S# l; D//        Clock_stop(ad->clock);, T9 h& g+ a( [' |7 _8 r# I
//        Clock_setPeriod(ad->clock, period);
( \( k: Z) N6 m9 _" h- a  z) `# N//        Clock_start(ad->clock);
3 ]* T, D- E' w4 ^, F) i* o//    }/ y$ R  I. i6 ]! O+ X4 W! o
# ]' W7 p8 r5 E% q6 e$ p) h4 z
         // 创建定时器6 ~- @3 e/ X+ _3 g1 _
            Timer_Params timerParams;
8 z& H- ~9 I( M% a& Y; r0 I            Error_Block eb;
* s3 p) y7 z( m- ]
1 ~! ^: c% P# X            // 初始化错误块
% N4 N- m7 D' k0 ~2 F9 R/ d            Error_init(&eb);
1 @% C) Z9 S8 @6 {4 U            // 初始化参数' H+ I% h+ \' C2 v' @
            Timer_Params_init(&timerParams);" v: N2 V1 u8 ~3 ~0 B$ K9 g% M
# U! J1 m2 U, X$ T& G* K/ I
            // 配置周期6 C  {% _8 s. [5 Y  P
            timerParams.period = Period;) u7 M' |# {1 G
            timerParams.periodType = Timer_PeriodType_MICROSECS;
) X+ b( \' s5 G! [% l
! ~4 m- O4 `) J$ ]* a3 f            // 实例化定时器
% z- ?# z3 g) q" ]5 B; Z# ]            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
5 N' m" a" Y$ f1 n! W5 L6 }            if(Timer2 == NULL)+ _7 L! ^5 K# ]/ h' t) _
            {
2 L6 U- E* L7 Y# R( b  F" t3 B( p                    LOG_INFO("Timer2  not start。。。。");9 l) r9 @. F" a
            }
2 `- p' N: I6 Z; f) Q5 q* f
; D: p/ \9 ~3 U2 H" B- X            Timer_start(Timer2);& B1 S5 j* I# f' M$ n9 F

) L4 M: Z0 [/ ]            LOG_INFO("Timer2 start。。。。");
  g/ c* J) _( J0 M2 r+ q( E- w0 Q
9 T2 r1 ?' a" U8 S) D    ad->is_running = true;
- P' z: S+ Q/ i, R}
( d+ g  Z9 A6 _5 ?+ ^; K* q* v- l. Y$ e: c/ ^# O, x
分享到:  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 17:56 , Processed in 0.037646 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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