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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:/ `0 O4 @+ [* V8 X9 l, y* D8 H
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
& y4 b) l) x' V) T: n
$ e' W( ~) ~9 P* c2 n
0 j# D& R& m; _# Q4 z+ o$ q+ n. E0 b9 W6 a) K: `

1 m" D* ~" T* I8 n  j$ y$ Y
( o# r2 o" e: }  d' cvoid ad7606_start(ad7606 *ad, unsigned int rate) {
- t6 @6 o0 S) J  n1 z//    ASSERT(ad);
) f* ?/ x* g9 f1 @& n2 I: l//    if (rate > 1000000 / TICK_PERIOD) {
7 ]) S4 d* Y5 t! T8 M//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);4 f! Y" u$ C: M" `+ n+ |0 z
//        rate = 1000000 / TICK_PERIOD;
+ M1 Z0 i- ~. J/ z8 w4 S- Y/ t( @//    }/ b6 q- c3 {0 G
//
" P7 }* i0 b2 U; g  o3 X& E//- s$ B# F( y1 Y2 r0 {+ C+ \" v
//    int period = 1000000 / TICK_PERIOD / rate;+ b- ?& O; H9 P' o% s
//% D# K9 v% s3 }6 ?6 x* W6 R9 ^
//    if (! ad->is_running) {
4 l+ _- }3 m1 a4 d: u//        Error_Block eb;
# X0 C3 w0 G  h, J//        Error_init(&eb);! ~# {5 E0 F6 P6 p! z8 A1 s% k
//# v: B* Q+ h' v% I1 z1 m
//        Clock_Params params;
0 z- |) O" ?" c/ n% r: o6 t//        Clock_Params_init(&params);( u5 J1 ?9 x* X& B# v/ h4 V
//        params.period = period;
: I0 v7 N# Q& i/ S) R//        params.arg = (unsigned int)ad;
7 W8 h+ o1 l5 G  \//        params.startFlag = TRUE;
6 _" Q3 M6 y6 v//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);# s3 Y' M& j6 d3 e& R4 o- v) {) }
//        if (ad->clock == NULL)
- M' I+ [! X: P$ Z# W# ?6 J//            LOG_FATAL("failed to create clock");$ F3 z% ~( ^: J' C; @: G- s- i- g
//
. r" I9 S4 K3 m- c# ]% u//        Clock_start(ad->clock);
9 @! V8 `1 Q$ f//    }% o8 T3 M9 s& u( x" {( v
//    else {
0 ~% P: C' N0 G9 Y: b. W//        Clock_stop(ad->clock);
1 _& v. |( W2 D2 @) _- @//        Clock_setPeriod(ad->clock, period);. |+ P/ j% U  _( X4 c# J* O7 A
//        Clock_start(ad->clock);& n, |+ A! r; m2 U0 u, f6 X; P
//    }" ]: ?; i% Q! m9 Q8 y- j

# B3 b- a5 e7 C, Q         // 创建定时器
+ T  B5 g, J- p6 N% P2 z+ E  v            Timer_Params timerParams;1 O( q! a% h( |8 g4 M
            Error_Block eb;
4 x# G: J2 j: c6 ^# f# I! t7 ~# k. ~7 B, K/ H$ z
            // 初始化错误块
" W( o3 y1 Q9 @+ K2 t            Error_init(&eb);+ ?9 I+ r0 ^1 G# u* F2 [* C
            // 初始化参数3 x9 r6 H- c& s9 R
            Timer_Params_init(&timerParams);/ L; Z' O: s0 @, V+ W- n4 P2 D
4 }1 d1 P% G& }7 u) E) y
            // 配置周期( y6 [/ E8 K- U/ C  _
            timerParams.period = Period;
* _; g0 Z. a+ A  |            timerParams.periodType = Timer_PeriodType_MICROSECS;$ F$ G7 g* G& J5 t2 n8 z

! {; _! _- H( r            // 实例化定时器
2 K7 n) D5 Q0 _# y' o+ N' K$ r            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);/ w$ Y( n; p& U# s$ U
            if(Timer2 == NULL)* g! J: e& U4 b) Y, }! B
            {. t9 d6 C. q5 k$ {
                    LOG_INFO("Timer2  not start。。。。");) w: P( T; D; p
            }
7 z5 E4 w3 B8 U2 U& i. N5 d+ w$ l. d1 F1 f( b
            Timer_start(Timer2);
3 z. G0 [/ P- L. M6 t( l7 i6 \# n4 [
            LOG_INFO("Timer2 start。。。。");
; D' w" ?+ c. O7 a4 A8 ?; M' ?  L( i
( S7 F' K- l( A- Q, T/ S    ad->is_running = true;' j% A5 K3 G4 A4 ?1 j3 z
}
+ K) ^* a7 d3 n  |+ u3 x
$ {/ I& Y" Y- p8 ]3 p9 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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