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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:! q9 {5 W9 S7 a  g" a( m, P) Q. }
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
  s, ^: b; F6 m4 {4 U4 M8 c7 k  {5 r
) F. ^1 l- G0 s: n7 u2 k
+ W$ Q0 W3 T1 F9 J& T& W% t4 f9 J, m$ d% G* y# H. b7 g
- c2 h( P1 v& ~. j2 N. x; t3 z5 Z  ~
2 W1 A& t4 S8 ~
void ad7606_start(ad7606 *ad, unsigned int rate) {
1 ~6 g/ w, P. W- t/ t4 y( j//    ASSERT(ad);
- ^1 J, o* N6 B/ I/ V//    if (rate > 1000000 / TICK_PERIOD) {: U9 T2 H' A8 r# d
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);1 ^. y, P- E+ W. d9 [, T+ W- z3 }
//        rate = 1000000 / TICK_PERIOD;
! U5 G6 q- [$ @5 D% N7 m//    }
% e( r6 Y1 K$ C//
; [0 q( w: L9 z. ]* s/ E//
: a$ m  L8 c' c% e5 [1 g  _0 h//    int period = 1000000 / TICK_PERIOD / rate;& W# U/ J' v$ \# T! ^4 z3 r# h
//
- C" f* i# A; P, g3 {//    if (! ad->is_running) {
1 u- x+ L" I# c" a. ^. q//        Error_Block eb;
6 D* w  h5 C6 l. x& w//        Error_init(&eb);
2 x7 J3 q/ |- J- t9 p- ]//
/ p( a/ R. G1 I0 t1 ?4 w4 g//        Clock_Params params;
4 s& _; I: U3 d. {; I//        Clock_Params_init(&params);
# n* C' X( W2 w1 F9 I& a//        params.period = period;
, u; ?) E  `! ^2 c: {/ a; L/ l5 h//        params.arg = (unsigned int)ad;( x/ ]  J  g. y# g+ O
//        params.startFlag = TRUE;+ o' C. l0 ]2 c+ D$ [$ d* Z4 z
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);1 _0 b/ H. y% H5 m
//        if (ad->clock == NULL)
5 Q4 D1 h- P; O//            LOG_FATAL("failed to create clock");
1 W0 B3 M4 ^& j//
9 Q5 }& j& L1 M, H//        Clock_start(ad->clock);0 j& G9 C. y) f- Y9 t9 k1 K6 z7 w* F
//    }
# X4 O6 T) `+ v( C2 O" [+ i6 I0 C//    else {/ {9 E' |6 k8 Z+ i/ o) n
//        Clock_stop(ad->clock);9 k' e+ x( I" @0 g
//        Clock_setPeriod(ad->clock, period);6 S5 s) l9 ]$ Z5 f, Z5 [7 j
//        Clock_start(ad->clock);: v! C* y4 G3 U# Q" K
//    }
+ i) g: `% ]# W# V2 T  ^+ }
/ c' L7 G- a0 l2 b5 l         // 创建定时器
7 X( z& N) Q" ?5 n( t! s) i            Timer_Params timerParams;
3 w% X! Z/ B% J7 g            Error_Block eb;
% K+ J) G8 ^5 S6 A) [) f) h' _* I; l. s
            // 初始化错误块. i6 ?9 \6 c" _% b; Y" {
            Error_init(&eb);
+ s! S  {: R- o; o! @" R# O& \. M            // 初始化参数
# e3 w* Q2 C( d. b            Timer_Params_init(&timerParams);
# m+ h4 ]1 t1 h4 Q1 e
; b- E. O/ ~4 c; ^            // 配置周期
5 [0 b% i0 L% P            timerParams.period = Period;& z( [+ u* f$ l* s
            timerParams.periodType = Timer_PeriodType_MICROSECS;
; ^) O3 a! `# j$ l* ]2 w/ C! ~$ I5 N
            // 实例化定时器
* v( n" Y- m, {2 B% |            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);! |' i' h& ?1 J, s, G1 i7 N) N6 u
            if(Timer2 == NULL)
. m& l9 P0 v) c% b# @            {
- O! F$ G) `2 p- ^                    LOG_INFO("Timer2  not start。。。。");3 s+ x. P: D3 Z6 j. }5 m2 G
            }
0 U0 v. X! x& ?7 J. A& f& s) c2 M6 \& x  f
            Timer_start(Timer2);
9 \5 ^) F' p' V1 O+ t) E, j3 N0 O) N0 R1 g' T/ O
            LOG_INFO("Timer2 start。。。。");
1 g+ o5 J  ^- t6 N6 M1 {# e
- F, o& n% h5 A! A/ y) a    ad->is_running = true;
) g" x7 R% N) V}: c6 P. [8 g- [, ~5 i
+ D% d7 H1 I. }& @% y; Z
分享到:  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:11 , Processed in 0.036961 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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