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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:7 i8 M, K; W; g" o
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
* L7 ^1 S, D  y4 y  X1 d, B+ L+ k7 @$ i/ v4 P

3 x4 x2 k" c! b+ d
. U. h& A/ n; O( S  ?6 J; x( I& T% R0 t

  G2 f# r& g# U" bvoid ad7606_start(ad7606 *ad, unsigned int rate) {
6 p9 N  A8 P5 s' L/ w0 E//    ASSERT(ad);
" {2 z$ D6 x# D+ I( G& ]6 f4 n8 ?//    if (rate > 1000000 / TICK_PERIOD) {7 @  n$ O7 r! v7 ]! ?
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
& u1 M0 [7 t- Z" i; j//        rate = 1000000 / TICK_PERIOD;: `5 P: r9 M1 R0 m* c2 u& f5 ?4 u+ E
//    }
7 p# I4 d7 X0 d* Z4 P//, f( |% A# m* U; t
//: u& l7 h0 @, R$ s
//    int period = 1000000 / TICK_PERIOD / rate;
: `: P# P4 c4 F% C//, e4 [' e* V( S$ |2 h
//    if (! ad->is_running) {
2 M. N8 q* P1 O5 o! C1 f3 P//        Error_Block eb;) k; {  p/ k7 @/ D- v
//        Error_init(&eb);; X8 |4 o1 F9 w4 M% |( i2 T1 C
//
: D5 L" e% c- _! j/ d//        Clock_Params params;5 Y) r% R' u: ~) k! `& }; ]& G) p
//        Clock_Params_init(&params);6 Y/ d9 a% q& Y  J8 [3 h. T( V
//        params.period = period;& {% y5 k& p, E
//        params.arg = (unsigned int)ad;
. s! ?% W- E9 ?( `7 ]; Q5 x//        params.startFlag = TRUE;
$ Y4 Y- i( F0 {+ G( E# ~//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
1 @, f7 X* t, j/ m- S6 x8 [//        if (ad->clock == NULL)+ K/ y  B5 K6 B2 b- u
//            LOG_FATAL("failed to create clock");' N/ [  t: `; H/ k1 R% W
//
  k% |# L/ b2 C9 K& R//        Clock_start(ad->clock);
1 r9 U7 _, h3 I6 r- G+ C//    }: x# P" O( _4 y" A4 \4 X) ^5 ], a
//    else {
4 J3 Z5 ~- T# ]0 C# @5 q//        Clock_stop(ad->clock);$ d( |. w* w: [$ ]
//        Clock_setPeriod(ad->clock, period);5 c( g, }! K( t4 F, C
//        Clock_start(ad->clock);9 ^" A9 ~! z! k! X7 R5 s
//    }, t' O/ i1 N- {4 G9 \3 L6 x' k0 t
% ~8 ?6 C) A; m( l) |
         // 创建定时器
* H0 {7 ?, ]3 k3 y            Timer_Params timerParams;9 ]5 \' k6 k" }7 P
            Error_Block eb;
$ y- q) P5 ?8 T3 z7 F/ y; S- [, }6 Z1 w! @8 g/ E, e) w; a0 D
            // 初始化错误块
( P5 {: Y/ s0 c" @% b5 U& T, M: m            Error_init(&eb);9 y5 ?" ^2 J0 l  ?5 h
            // 初始化参数
$ D/ N- p, X: ]. @. ~            Timer_Params_init(&timerParams);
7 c2 W, k" R2 _0 @) M$ x& Q% Y$ n* p( s, w; b
            // 配置周期
. ]9 l$ ]& A8 K5 s5 o+ X, @9 C            timerParams.period = Period;  o, }4 x4 b! h" U
            timerParams.periodType = Timer_PeriodType_MICROSECS;
3 C# t. g4 }( f! t, E( Q, A0 B$ L3 ]: i2 K1 M# {
            // 实例化定时器8 ?6 `8 q  }9 t2 s# b/ S
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
, X! }: A- i; k2 I2 g0 ~5 Y7 r            if(Timer2 == NULL)7 [6 Z5 Z5 _0 ]2 U  `/ g
            {5 g4 ]4 t2 v' z% K+ e2 V' ~  b% H
                    LOG_INFO("Timer2  not start。。。。");
8 R0 d2 u. b6 w$ _8 [# |) f" g0 F/ z            }( ~+ `# ^( F0 P0 N- ]! F5 C  d2 p
# z) h8 _  O- |8 h+ a
            Timer_start(Timer2);
  G/ w; k7 Q  o& t' L: b: I$ K6 i- R$ s9 i7 R; E5 p
            LOG_INFO("Timer2 start。。。。");7 P" k8 y, L+ F# s) o2 O3 _9 J

% J+ D; f9 o- ^9 W9 Q1 q6 \    ad->is_running = true;
  t. p3 v& T* G% Z7 b; W1 t0 L( m4 x}
  p% R  W- j1 k4 h* E. z/ O. K8 e7 ~: l1 [6 b) z( c& Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-3 18:46 , Processed in 0.037709 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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