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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:7 j2 `! G$ |- x; q/ X" `& c, \9 _, Y4 O
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
* u% \9 `0 Y, v
. d/ T8 }5 G, Z& v4 g, y! p8 g! X3 M8 N1 o5 ~8 L

% ]3 }4 M, R0 e9 o" _* j; |2 N2 a' }( p+ ]

. R7 j4 q6 F+ F3 u3 Nvoid ad7606_start(ad7606 *ad, unsigned int rate) {  A0 y1 q0 z. ]4 {8 o4 h
//    ASSERT(ad);- q. K8 h- ^( A' X1 D+ S4 }# o
//    if (rate > 1000000 / TICK_PERIOD) {
  E! V; X- X0 z) K# B9 x: L+ |//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);( P/ t% L6 e/ R- H0 S, F
//        rate = 1000000 / TICK_PERIOD;
6 H3 J3 |) R$ K; x% D4 S* E! N//    }( y, A- @* h5 o+ @
//) R, [% N2 c* `5 {: m
//1 @6 U6 h5 G6 j  K, ~/ j1 ?
//    int period = 1000000 / TICK_PERIOD / rate;7 z; a+ r( W; ^7 B" q
//3 j: [" F& H1 v- S
//    if (! ad->is_running) {
6 ^7 K0 O. j  E/ @2 |- }0 }//        Error_Block eb;- J' d0 ~+ p* k" Q7 @
//        Error_init(&eb);
7 Q# V; L$ |  z* H' i6 S//
8 r$ l/ W- {7 b2 J# P5 ?# @//        Clock_Params params;1 ?  j3 C% V2 @0 c, Z9 Z# j
//        Clock_Params_init(&params);
9 ^* s' n2 u+ t' z//        params.period = period;
+ a. u+ x4 I0 p0 ~. M//        params.arg = (unsigned int)ad;
! |3 Z* ?& K3 K  J" Z# M* z0 P. {//        params.startFlag = TRUE;( Y6 T! \0 o/ V
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
8 ]. ]* w8 ~: O: a# p$ j//        if (ad->clock == NULL): D# q- Q# n/ W5 v# j* W
//            LOG_FATAL("failed to create clock");! K- N  w6 ^3 u; ^
//: X3 y" r' U4 q3 B. t
//        Clock_start(ad->clock);  ~' T' s6 s' |& X$ d9 M/ H' q
//    }
: `3 p9 k. L# Y7 I! {//    else {
8 a0 I. G; N% H& a1 W//        Clock_stop(ad->clock);% Y- v& C+ C# j5 ?0 y
//        Clock_setPeriod(ad->clock, period);
  I( p5 A( Y- j) t  e$ J( K//        Clock_start(ad->clock);
6 h1 O7 A6 {- x  B" @/ q//    }9 L& e. b' h4 s# \6 v  x9 X

% q! }+ z) ]! p         // 创建定时器& E/ b# \$ H& ?9 _
            Timer_Params timerParams;6 w+ c* B; ~" ?; F  o  I
            Error_Block eb;
+ O. M& u/ r; `
" u0 {, ]$ h1 B8 Y3 }2 n3 `            // 初始化错误块6 k; p4 h- y. }. p! H. V; ^+ ^
            Error_init(&eb);
. M8 m3 v5 v. s" F# n# T  i6 {            // 初始化参数" V, P- Y0 E1 X" f. v# i7 t1 ~
            Timer_Params_init(&timerParams);
. Q0 R6 _1 g! L7 I) R
6 g' Q1 @; \) b2 k5 ?* I1 e% l            // 配置周期( e2 L8 e1 C& g$ Y1 S
            timerParams.period = Period;; s1 b3 U. f$ e; V" J
            timerParams.periodType = Timer_PeriodType_MICROSECS;
7 X9 J) q' M- d) A7 _) p" y) p
$ m0 n  d2 l8 |+ K3 L/ T            // 实例化定时器* T% b0 d0 w* ]/ v! u% J4 ^1 ^, {
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);/ @* z1 o- a7 Y" H8 i3 H$ J
            if(Timer2 == NULL)
7 D& K# x# ]% d, H7 O% x3 p" [- _: Q            {
( C: q# [; t) n+ S, v1 B                    LOG_INFO("Timer2  not start。。。。");
! W6 _$ H5 I5 v5 _3 {3 l. k7 S            }1 Y6 U" U- f5 T5 m% P- D$ I3 g8 i
' s) C# o! }& a0 C# A! ]1 a
            Timer_start(Timer2);. B2 R3 ?5 |# d0 V1 L% M/ L

% F5 e+ V  |) p- _! s7 {            LOG_INFO("Timer2 start。。。。");
1 D; [4 @& V2 u! X5 R* E0 }: Y9 P, Q2 D) C
    ad->is_running = true;& f1 o1 T  E& Z1 }
}
% r; E; K5 B7 m% m& P7 ~  z
0 h) V0 S2 ?8 E8 }$ s9 \! W1 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 18:12 , Processed in 0.036296 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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