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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
您好:5 G% P# I# x; Z' @6 w
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
  `- Z2 X& c. V( X: @1 r( r5 t1 ~5 y  E
3 y9 K) o0 R; G5 ?  y1 Y
4 b' r2 u- a) {" _
# H# v4 ]& L2 F4 u1 W; `
( Y& L% S6 `) k0 q9 A' A& G
void ad7606_start(ad7606 *ad, unsigned int rate) {  E8 ?6 O: l  g! b5 ?+ S
//    ASSERT(ad);
- b# p1 e$ _% O' {//    if (rate > 1000000 / TICK_PERIOD) {  b: }$ q1 i1 j% F2 T& ~" v" `
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);2 C0 Z6 r  _. R" L  ^; I* {) S
//        rate = 1000000 / TICK_PERIOD;: A6 |1 V: p, Y5 b
//    }
! A5 J- _2 v5 S1 N. L/ J7 r//( @# {) Z; n6 a! _3 O- y+ V
//
$ z, Q! Y! u7 f, C//    int period = 1000000 / TICK_PERIOD / rate;
! x! G8 |4 [1 W8 G' o3 ^: {% Y//1 b+ N5 H# f9 H+ h( U% S
//    if (! ad->is_running) {9 U1 w, l1 U& p3 y, x
//        Error_Block eb;
6 R' M+ W; s% O+ ]; G8 m+ @1 \//        Error_init(&eb);
: T: H9 S) T4 Q- C8 P# }//" a, g  e& P, q: D, D
//        Clock_Params params;
' ^8 n3 x- [- ^6 j; F; e//        Clock_Params_init(&params);
9 `; m) S* @& c1 h( i, q" a5 ]//        params.period = period;+ a' R6 y$ T5 t+ A, ^0 w
//        params.arg = (unsigned int)ad;& |3 Z' m) m6 w0 v4 C3 y. ^( @  a+ K
//        params.startFlag = TRUE;# d- Q- M) K  Z& F  P
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
" `* z3 q2 B; j& b//        if (ad->clock == NULL)
4 e$ g# \7 U1 Q//            LOG_FATAL("failed to create clock");2 A/ J+ m$ U7 l  T8 Z9 X* [
//! ^3 u7 L% r" a& s
//        Clock_start(ad->clock);
& c/ Q) g. x  `: B//    }
& ^8 g% C: m8 n. h4 E//    else {
! t5 O# P3 |, T2 v3 m" A7 }//        Clock_stop(ad->clock);
! P/ p/ H$ y& \5 p4 F//        Clock_setPeriod(ad->clock, period);8 S+ q6 Z- M8 `9 Q, ]
//        Clock_start(ad->clock);
# ~) y' B6 D2 J6 D//    }7 E, }! S' m$ I1 B

+ t# t. f5 P. u% _) V/ B+ Q/ o; [$ g         // 创建定时器
% j% M( z8 P/ g# _            Timer_Params timerParams;9 v+ w0 @0 X3 ^. W
            Error_Block eb;
5 S' U0 g; f8 L9 u9 a; Q0 {$ a1 H" w
            // 初始化错误块8 H3 X5 _4 y6 ~
            Error_init(&eb);, \' M( ?! t( @
            // 初始化参数
7 i# z' |5 q0 J4 ?& K, I" f; K8 U# a            Timer_Params_init(&timerParams);6 ~. U3 c* U* B* n* R+ ^0 |

: s9 r9 ^. m1 ~  Z9 V            // 配置周期
: u! D  ^9 q3 B0 m8 K. Z            timerParams.period = Period;+ M* A  k6 b. z% i: c
            timerParams.periodType = Timer_PeriodType_MICROSECS;
* G  m) U9 `# {5 J2 ~, v/ |: _' X2 r# @2 f, c
            // 实例化定时器
; G- m; w. I! `8 c2 h: q            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
% e* W" O+ R+ @% M1 Y2 v: B            if(Timer2 == NULL)
6 ^2 w) c+ w6 E$ N9 ~# k9 a            {
/ Y. ~5 o" R/ D2 J- A                    LOG_INFO("Timer2  not start。。。。");
7 {" T& g' z4 W) M            }
/ k/ T0 U, f1 ^0 j% p% }0 S; b7 I  J1 z6 P% L: p
            Timer_start(Timer2);
( s9 J* D1 s8 t: I; _- w) M! d7 K: }. ~+ Y5 {- g" e2 P
            LOG_INFO("Timer2 start。。。。");
' Z& v3 T% n7 M7 \" f7 Y
" j  ^) ^$ S! l, U& p    ad->is_running = true;  W9 f6 |! i: |& ^8 R
}
7 \1 I1 [. E7 l4 ^1 J" k. t* b5 ~# ]8 Q4 |3 `4 X! H" P0 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 09:28 , Processed in 0.037752 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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