关于定时器问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:) B) i3 Q* |: l7 }
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?8 l1 u; w$ r" Y$ P8 }. B; Y

# q4 x7 I: n. e4 T4 ]5 t) I: j& M' E7 U: @3 M9 Q
# |# G) O  X6 J$ P: N  U& Y6 K

9 [( b8 d( o, h% M3 w+ A$ v. o' R' ^6 V& X$ C/ d6 \4 Y+ L
void ad7606_start(ad7606 *ad, unsigned int rate) {
1 R( J3 p+ ]8 x2 U6 ]//    ASSERT(ad);3 [% G7 a$ f9 U# X# T8 |
//    if (rate > 1000000 / TICK_PERIOD) {
7 u( k* f- |% u% `& d5 W& N//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
2 i1 S( ?  m* P/ J5 k- _//        rate = 1000000 / TICK_PERIOD;9 n! L& h! ?$ P, q6 h$ L$ l+ x
//    }5 ^4 V$ L& j% v3 ?4 \! x
//5 b3 y2 B' `. R3 S7 A
//
) G& B8 L5 g8 u( e6 ?//    int period = 1000000 / TICK_PERIOD / rate;+ |) G5 V; y4 u
//
; \" \6 s0 \5 t; j4 l3 @8 a//    if (! ad->is_running) {# ?, D+ o# Y2 p" `7 D) n
//        Error_Block eb;1 t! V. f* A* s/ f  E& ^, s
//        Error_init(&eb);' t# W1 @. K3 w( x3 s
//
! l& g/ Z# l1 j//        Clock_Params params;
* h- v" e! f, B4 T$ k//        Clock_Params_init(&params);% Q/ B' p* F) _0 }5 F# e
//        params.period = period;
% r6 a/ S7 s7 m4 _//        params.arg = (unsigned int)ad;7 i! `0 }' [0 c4 n+ y- J8 Q# M5 T
//        params.startFlag = TRUE;, k6 N* J! Y1 s0 k9 f4 x1 Q
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);3 n: L  J5 ]' B8 s7 d2 c' ?& I
//        if (ad->clock == NULL)
. A0 m) a6 z4 ?" A//            LOG_FATAL("failed to create clock");2 ]9 a; ^3 F/ @) W
//
$ B" d' }9 [, J* [  Z# w7 K//        Clock_start(ad->clock);
- m- `4 G! l0 L  Q% F( P1 S; o$ [+ p//    }4 B  n5 \9 W# e8 w' H* I( ?# ?
//    else {
5 V  Y3 g3 S8 h- ~0 D//        Clock_stop(ad->clock);
; g7 I0 @! x% j. Q9 C" c6 U$ {. `" y//        Clock_setPeriod(ad->clock, period);
2 h4 ]7 `; P# G+ m# a//        Clock_start(ad->clock);
$ d% B4 D) e5 O  b/ A//    }
1 q/ I0 k  B" s9 K* n, z, l" V6 q( C) q* L9 ^3 H: z* s
         // 创建定时器4 E5 v2 X9 a- {
            Timer_Params timerParams;# I6 z2 d' L# H* {0 \7 o' D
            Error_Block eb;& \. n/ r5 i* ~

1 j) x  \3 S2 }5 S            // 初始化错误块  t1 X/ c3 D1 P. C
            Error_init(&eb);' E* ^8 q, S* J3 I7 ]3 e/ e
            // 初始化参数
4 O; H* r/ n( J! b% y) h% s% j  k            Timer_Params_init(&timerParams);
2 y2 w3 n  F/ e- h. D; X  @6 O% V% t& S5 z4 |
            // 配置周期$ @' g* X) D. ^4 N) n2 }
            timerParams.period = Period;
# `& J( v) `1 x& H' U5 ]            timerParams.periodType = Timer_PeriodType_MICROSECS;
/ p# g. U$ N( }. O- B! J4 M8 z
+ j% H) I$ i# ~" P1 t            // 实例化定时器2 b8 L+ o9 z. s9 r3 [1 V" f: v3 X
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);" B. a8 _, E, X
            if(Timer2 == NULL)
( f, t7 E1 s8 {% T! ^- \( g# R            {- l% L+ v$ ?+ n& ]
                    LOG_INFO("Timer2  not start。。。。");
. h& p' L2 O5 t! O( m( X0 E            }
6 E# S9 h6 s6 l# O! A' f, S* w  x8 F: ^! D' u, e
            Timer_start(Timer2);/ b. t# E' X* _* r' u1 ?
1 \% Z5 X: N; l7 t1 t4 w1 p- q, f" l
            LOG_INFO("Timer2 start。。。。");
! k, T1 M5 d0 [. @+ o! a1 L; X" W" \) C& r
    ad->is_running = true;
& K: P4 @4 i. B4 I5 y8 O0 I& ?}
$ P9 U/ F0 L- h8 {6 ]
& ]0 `0 ~* g# b) t/ S) [) A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 06:43 , Processed in 0.039196 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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