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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
您好:
, u- d' b4 l* H       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?$ G  ]4 `+ J0 ^$ A7 `1 Z5 H: |7 p

9 ]$ ~5 l  C5 E7 f0 d, Q8 O9 y0 q9 ~1 h+ _8 n& _" _  `
. l" x/ o4 J: d
$ Q0 A7 j: R" c/ X) h8 |: k

$ R( m& g4 h& z* ]; f( M  Avoid ad7606_start(ad7606 *ad, unsigned int rate) {6 n6 Z7 ^$ a4 B. D
//    ASSERT(ad);0 @0 d( [7 @+ _
//    if (rate > 1000000 / TICK_PERIOD) {
/ V: i/ P& |# R+ h3 p1 T+ J7 ?6 d//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
" O& N  e% x9 s1 g//        rate = 1000000 / TICK_PERIOD;
1 k0 F% N! r- t) A//    }
& p! v3 B+ p8 p# X//
+ C6 [; Y5 y% A% V; V1 p* T//
+ w# x5 M: D- x& L: Z6 D* C% z1 u//    int period = 1000000 / TICK_PERIOD / rate;
) e. w) f0 X: S% ^$ ?! T" V//
( t3 h8 I" [+ G6 B/ I//    if (! ad->is_running) {+ h5 n$ T1 ?! ]) ^; N  i8 O; E
//        Error_Block eb;
9 o1 L% |2 m& z! i1 A/ S% |//        Error_init(&eb);
$ |# p$ }1 f+ q% `' ]//8 v7 v9 Y: O% k) E+ Y" c5 `7 b
//        Clock_Params params;
' w: c6 q& k$ p5 ~7 E. E//        Clock_Params_init(&params);& g* Y' J9 k. g% {: ^9 x
//        params.period = period;
8 i- R+ P: P9 R. H, c! U//        params.arg = (unsigned int)ad;
: U% A6 e3 f, _# z) n2 _4 Q8 z. x. q//        params.startFlag = TRUE;
; G0 h* g% S' _7 m( Q# E//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);+ f8 e: H8 }1 Z; x' H7 s
//        if (ad->clock == NULL)1 ^4 Q* b7 N2 D; ^  H' ^
//            LOG_FATAL("failed to create clock");' p+ R  |" a8 Q& Z7 m6 S8 B
//2 ?" M6 }# S( z8 L2 r/ d+ k9 L
//        Clock_start(ad->clock);
' _7 ?7 C4 Y3 w2 K//    }
# I7 E4 b9 m; f" m# A! h//    else {5 P( r1 b0 l2 u" L
//        Clock_stop(ad->clock);- O( V8 \9 ^5 R' b4 \! F+ l
//        Clock_setPeriod(ad->clock, period);
. g& A# A0 L) G# K6 r//        Clock_start(ad->clock);+ t% v" m# P) ?+ z
//    }4 U7 R$ t% t) q9 B2 _
6 d0 x$ N# U# c4 O' o
         // 创建定时器
5 e5 U/ _0 L$ G' @: j5 O- p            Timer_Params timerParams;4 ^6 {9 J8 N) W. I
            Error_Block eb;
! k/ y8 y1 n7 O/ R& X% \1 i$ P2 X9 y8 A$ f, E" x9 O+ C
            // 初始化错误块
* V$ \. |- _) A3 l- I7 v            Error_init(&eb);
1 i, F  ~0 j& j5 f/ I% b            // 初始化参数  d3 g3 |7 x/ f9 ~6 W' a
            Timer_Params_init(&timerParams);7 D. M' _" A  f/ n4 H( Z& H
) ]8 g2 F% K: {9 e! u* m2 l
            // 配置周期
- Y7 I9 _( V' K, G9 I' d            timerParams.period = Period;- z) F$ q# m% }, q
            timerParams.periodType = Timer_PeriodType_MICROSECS;
; y" f1 n. X, K7 z$ q& s" [0 m: q$ O7 j, L, A8 `8 ]
            // 实例化定时器
8 J7 Y& ]: K1 W1 h  {            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
6 X8 D% v* }, E3 a9 Y# W* M            if(Timer2 == NULL)
& |% q+ M' o) C, l- t            {
- z1 L4 u) e2 p                    LOG_INFO("Timer2  not start。。。。");  T( j3 J( d; t9 I. \5 \
            }7 d# O6 }: a7 g+ c8 Q* {* N

2 g4 U& i$ o' b: ^! P! a            Timer_start(Timer2);
6 `5 d) ], h" E1 U# K' [
. x4 [1 s' h( Z2 X" H0 w  ]" E            LOG_INFO("Timer2 start。。。。");* [! J7 d+ e4 U2 l4 D, B
, X. h" ?/ u6 D8 c: u0 N4 U' W
    ad->is_running = true;
/ e3 d: V: k1 y! b}$ q5 P, f( X( e0 Q; p

* n$ a+ L* F3 _, V
分享到:  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 21:01 , Processed in 0.037758 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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