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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:1 u9 x1 `5 Y/ K
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
- B- Z, s4 p& P. r# f5 x$ D  }8 l4 q/ ~! Y0 n
9 K1 ?  t" k0 T: G0 g' E! ~. L
# M% e  S6 O  N# L8 x7 O
0 r" @( _& W5 Z
- X8 F  G8 I3 e; I$ o. m7 @
void ad7606_start(ad7606 *ad, unsigned int rate) {
& S, J5 v5 |$ U6 u( D2 m//    ASSERT(ad);
* F' \* x; U$ p//    if (rate > 1000000 / TICK_PERIOD) {
4 ?( {6 ~/ a5 x$ w7 m//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);4 |" \0 @$ u! i0 n
//        rate = 1000000 / TICK_PERIOD;% o( X- M) W# R1 L( z7 {2 ?, ?4 e  E2 ~
//    }
$ ?% b- u) |- K8 b8 l//7 U8 z1 \! {1 P4 B  F
//
* [: J3 U) D7 c8 h4 t//    int period = 1000000 / TICK_PERIOD / rate;$ m, u& o  {8 Z/ x1 g0 U. _# F$ l4 s
//3 J$ f, v) w6 x5 S2 K" c  N! C
//    if (! ad->is_running) {7 k- Q- ]/ l) `. z/ q$ \  U" B" X
//        Error_Block eb;" B3 X2 b6 T- a1 {8 ~
//        Error_init(&eb);
/ `. ?" D2 y( c, H& w//
* M; K7 K* r% D1 N//        Clock_Params params;" U7 v) l0 v1 b- X; I0 I
//        Clock_Params_init(&params);3 {: f$ G$ }. P4 u# b$ C; D
//        params.period = period;
) L. [& a6 |; c, p4 x: |( L! u+ Z//        params.arg = (unsigned int)ad;/ V+ `1 c8 P& R& u2 }+ `2 U
//        params.startFlag = TRUE;
1 K( U; g/ @8 u$ l! W9 n. Y. g//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
' h: m7 \4 C3 H9 t$ N//        if (ad->clock == NULL)
8 _  K; M4 N8 e* b% B+ B//            LOG_FATAL("failed to create clock");
/ [+ ^4 B) {: T/ P//) Q5 f' h) @1 v8 M2 V& Z+ F! u. N
//        Clock_start(ad->clock);
2 @2 W! |/ ?+ X% o5 B//    }9 M# |: t7 O1 |5 [1 c* F( U, N
//    else {
5 P( w9 }, A* b7 H0 g# T. H//        Clock_stop(ad->clock);* J( \& L9 j  [- j6 D; D
//        Clock_setPeriod(ad->clock, period);
4 B4 B: n6 t5 G" ^  ]: T//        Clock_start(ad->clock);
/ h# b: K! \9 |3 V9 G//    }
7 F. D5 R% `- w3 r/ ?0 o: A% {( r) P* n; W& y1 T1 z
         // 创建定时器
1 }4 ?, [1 a3 k: _            Timer_Params timerParams;% F8 K$ T( c  d$ i- E
            Error_Block eb;/ h, l+ d) e0 s( L! y, |1 u% B
5 z1 b0 b4 j0 |* _* v
            // 初始化错误块
3 E4 M2 v& ?  D3 ?* r            Error_init(&eb);
& x+ m3 c1 w  h            // 初始化参数6 q" V6 |! a& D) P' g7 W/ G
            Timer_Params_init(&timerParams);
( u  k3 k3 U# j& H4 P" J8 v. ^7 [' `+ b& V2 r9 K! ~
            // 配置周期
+ V% {/ s4 ~8 M: a5 j            timerParams.period = Period;( W; B) D" [$ ?+ i0 D
            timerParams.periodType = Timer_PeriodType_MICROSECS;: O$ @" g& G+ }) r6 V7 t
5 F4 E! e  K" H* O5 W6 R. j
            // 实例化定时器- N: F2 v2 m. b; I* J0 F
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);3 G* j8 O" ^; w4 d/ W" S1 j2 c) r! H
            if(Timer2 == NULL)8 Z4 p5 ?2 \: d* B
            {9 P* [2 Q- N+ I7 ]( k7 p
                    LOG_INFO("Timer2  not start。。。。");- w' [0 D: M. L; r: s+ y
            }
+ a* `1 {% b, K& g7 m
4 t. V/ o+ e/ U& F; }            Timer_start(Timer2);
% F  m, g) j: C, x/ ~$ H( G9 \& w8 B2 V  q* k2 s
            LOG_INFO("Timer2 start。。。。");
# i- e) F' M  i( j9 r  U% `
- s5 H# q: P9 Q8 S0 T7 m6 F! }    ad->is_running = true;
% Y4 J& C+ g1 X  T! }* P}$ a1 {; G% d8 a1 y4 w9 H
6 W  L8 U2 h1 Z8 M
分享到:  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 20:55 , Processed in 0.054468 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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