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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
1 w& r# ~6 l' h+ D; p) B& U       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
& f+ @; r/ |/ `7 {; w+ z  P- U8 m
, p! V: f5 ?9 L& m9 @4 E* L. Y' {- u. e8 K

2 U! h1 [% N6 x- R% a* V2 P$ I% F( p' A6 [) i( E
0 j/ n% ~" }: O
void ad7606_start(ad7606 *ad, unsigned int rate) {
2 x' z" v% {- }* o0 x//    ASSERT(ad);
  ~8 K" t- }( C9 A! @  G% t//    if (rate > 1000000 / TICK_PERIOD) {
- n- L$ S* x. `' S) R  [- B//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);9 c4 E7 O) c) ~
//        rate = 1000000 / TICK_PERIOD;
6 Z- b  M. u5 m9 N0 L//    }
' o- p5 q9 y  t+ x- }$ r* A+ `//; {. j% s1 S2 P  e( Z
//
3 m0 ^" Y) e+ C( y3 W8 Y  T; [//    int period = 1000000 / TICK_PERIOD / rate;! ]& }* F0 @/ y3 ~
//
, L; b' q0 o/ w+ K, O+ B//    if (! ad->is_running) {
- D' \/ K( W: P. w//        Error_Block eb;
" f7 N4 {0 x' ~: n* ?7 T//        Error_init(&eb);
( G! c# k! b' _% z//
7 p$ d( i5 X; L( K- I* T* T9 t; v//        Clock_Params params;& D' D, k5 d- j3 ^
//        Clock_Params_init(&params);7 \' i: P, L; E# |& K, T
//        params.period = period;+ L- {( R6 u' s3 B. M+ p
//        params.arg = (unsigned int)ad;
$ V8 ~9 u/ B- t. e$ c; N//        params.startFlag = TRUE;* W5 q9 x9 ^6 j& L5 c2 C
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
5 B, k( ]# @1 T7 w0 e- g9 B2 L% w//        if (ad->clock == NULL)
! t+ d) T8 {( _2 A1 A//            LOG_FATAL("failed to create clock");3 J0 E6 t- B/ I1 b$ t+ Y0 H" G
//
: d: v6 Y" O2 j; r* o* A//        Clock_start(ad->clock);
8 s7 J# A1 T0 E6 `* s, D) J//    }: b; J' g* N& s# D( Q! B
//    else {" o- [" K/ Y4 l& B% ?
//        Clock_stop(ad->clock);% o) n. @$ j7 J! N' X! U
//        Clock_setPeriod(ad->clock, period);' h/ |; k# o5 t0 }, W4 D0 @+ p; B
//        Clock_start(ad->clock);3 `3 h$ ?. v% s/ R* W
//    }
, F; [) {% a) A: H/ c- ?4 Y' {" v7 b8 O. a+ u( }
         // 创建定时器" V) k4 m& A. M5 }- ]( A: n& y
            Timer_Params timerParams;
2 f& G( z. z" I( s            Error_Block eb;4 A1 ?' k4 w/ `/ c& s# I+ {

: z, m, |! Q5 S$ o1 H" [            // 初始化错误块
5 b1 z' G* O4 b. O            Error_init(&eb);
( J6 x, U$ x# R" N0 m: E            // 初始化参数+ v3 L: a. q2 K6 B6 r
            Timer_Params_init(&timerParams);
8 n1 ~- B  }. z' ~
. ?# C( u. }9 _0 |* R% f6 E% b            // 配置周期$ D3 L. c; Y7 x* u4 z0 p% V
            timerParams.period = Period;
# N9 _" {1 }+ g( |1 F8 R2 I$ @            timerParams.periodType = Timer_PeriodType_MICROSECS;2 |$ J& s! h" l$ k( t

1 u7 z2 [! z  O5 D# z1 d            // 实例化定时器
3 u$ ~- e4 m$ y* g. J; @3 K            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
$ y, Q% I9 X. Y0 ~3 c            if(Timer2 == NULL)
4 A3 ?4 K* x2 K( E+ a0 S9 Y            {( w- F  g; Z3 L  F
                    LOG_INFO("Timer2  not start。。。。");
0 t: c8 w( x8 y, j9 ^! x            }& B/ z+ R* q# ]- H0 j
& V! o# T, R9 v# H2 Z
            Timer_start(Timer2);
% Y! |, {4 V+ G* m/ v' [1 [8 O2 K$ Q7 x" [
            LOG_INFO("Timer2 start。。。。");
: _/ }3 j6 t/ P3 u# d9 X  o5 c2 f" P0 @' `: q- _
    ad->is_running = true;
! s  S  Y0 |) e& b; j, i}9 `7 s- \- @$ x" O9 ?
- z# k0 g7 ^& ?( I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 08:17 , Processed in 0.038389 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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