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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
; j& n. Y+ S# S/ z- K- r2 o3 B       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?7 a8 }3 F; D; e9 G

" z& Q: {8 r- S+ J- b; M# a1 b* `6 m" t1 S9 E6 x6 z' f* R

4 S9 F/ i$ D, W, N! b9 w7 r. E* i' Q. w6 u2 q$ l9 G- N- r

% P% T3 K1 X# C8 L# \void ad7606_start(ad7606 *ad, unsigned int rate) {
! ?1 W% I, d- o//    ASSERT(ad);
8 X; r5 R  T/ j' F/ r/ G: L//    if (rate > 1000000 / TICK_PERIOD) {
7 f: k2 J/ \. B5 }5 m! p1 c//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
+ O1 H6 w- \: j. ~# N: K7 J# s$ o//        rate = 1000000 / TICK_PERIOD;
; q$ Y* a! _1 x& p! M9 _5 E: H2 I4 j- ?//    }
2 C) N7 }  v9 u//$ V8 z: b# ^; u3 H/ C* O: j
//; X( s# L2 z1 l; ~) Z  Z
//    int period = 1000000 / TICK_PERIOD / rate;
* f) A( N7 r3 \: K" w2 E//" k# Z" }! |$ l
//    if (! ad->is_running) {* W9 x& Y2 S! X" M% k+ }  l
//        Error_Block eb;
5 J& V# e/ K4 \4 }4 o( E//        Error_init(&eb);
. N7 {# r  ?. y% m$ d% _$ Q& k: q//
3 [0 ]/ S% Q/ q//        Clock_Params params;5 Z2 Y" A' N- b( V) C9 ^, [4 Y
//        Clock_Params_init(&params);
: F+ ]* n; A' T//        params.period = period;
( n: f5 `+ c* i  B//        params.arg = (unsigned int)ad;  f. l: I# Q- m2 x$ W
//        params.startFlag = TRUE;  D) l1 L% Z: @0 h# o% d
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
4 z) j* [; e- l; z  X/ J//        if (ad->clock == NULL)
0 e( M+ s: w1 r7 k) z//            LOG_FATAL("failed to create clock");3 \1 w7 Q& L, e# N$ h9 L. V4 c
//
! d6 `3 s) [: x; R6 Y1 }5 {//        Clock_start(ad->clock);
1 ~& Q' V+ ]% K$ N$ m3 L% }//    }) w$ R% O7 R2 U6 q* h
//    else {+ B4 O/ f9 I0 M# a. H
//        Clock_stop(ad->clock);
2 c7 p% H5 l# K3 Y- ?//        Clock_setPeriod(ad->clock, period);, @2 A; q" U& j1 e. d- T
//        Clock_start(ad->clock);' ]! G/ j! }, `" Y
//    }# ]# l8 }; z1 i- n/ C$ B  a0 G
, m' T8 M- Q( `1 k
         // 创建定时器
: k, Y; C; r' ?( F8 Q4 O- q: _6 X! e            Timer_Params timerParams;$ H. X* V9 N1 E' S% C' t; j
            Error_Block eb;  [  |7 r* m* |0 h, A9 v2 l5 U
" q7 D9 a# R8 T0 G* u2 t' b
            // 初始化错误块
; y. l& Y+ A6 q5 j" L) D1 W; |            Error_init(&eb);! W8 n+ v. S* L1 U; b  Y/ s& M$ P
            // 初始化参数& m- P( R! l% j* N1 P
            Timer_Params_init(&timerParams);( \5 f- H/ G; D' K8 `- q% H8 `1 T- }
$ n6 F7 w3 U8 `2 x" E  \7 j, }
            // 配置周期% s- y6 v! c4 W+ g" E& F$ @* Z
            timerParams.period = Period;) O! z, H/ h' i( l) D( c$ B+ V4 C; \/ j4 q1 `
            timerParams.periodType = Timer_PeriodType_MICROSECS;$ O9 N3 N4 G2 }

& f5 [) W6 V9 R7 Z$ @; Z5 r0 f0 Y9 E            // 实例化定时器  {+ @# k$ y+ u7 s0 ?+ ~+ l
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
  n! d/ z# ]' {5 S% \) Q; J# w2 y) M            if(Timer2 == NULL)
+ C0 [  K- ]  H/ ^            {
2 B$ W; R( b, \: I! W, u                    LOG_INFO("Timer2  not start。。。。");
/ r& W: R% H8 y9 Y5 |3 Y6 g  P( k            }7 Z) v( x, x9 a9 ?/ n

- z7 o$ H' E  u" e. K. J            Timer_start(Timer2);
% m' ]- @, ~6 F2 Y5 L8 H8 c: v! p$ t0 d* V
            LOG_INFO("Timer2 start。。。。");
! R0 j- X, M! h
4 }& w* `  m! M( B) H; y    ad->is_running = true;
3 F1 t, `9 X# _}5 `" P/ K2 O8 B4 C/ E% T
% U2 ^4 T! a) B9 w; _7 f! X& ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 23:55 , Processed in 0.036621 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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