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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
) n5 Q/ V$ W9 c; |) h! |       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?/ \6 H" N+ ?* _( Y
8 O6 Q: U9 L! d6 N* c/ f/ f
: y+ s; A4 X- b; ^. _0 Y# B. X+ @
5 x) ~% P5 O2 i. G5 J
8 u6 ~. J' _/ t0 ^3 k' U3 K. F2 e
" E( \! t) S5 o
void ad7606_start(ad7606 *ad, unsigned int rate) {+ Z% D% e2 \' V7 m
//    ASSERT(ad);
' U' c7 g1 S  `- x0 T9 e//    if (rate > 1000000 / TICK_PERIOD) {
/ o* [) v$ H, n//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
% E# U% a; t* Y//        rate = 1000000 / TICK_PERIOD;! y0 r7 r. N/ [! n2 h; z, ?: ^+ b
//    }
& B$ v$ k; g# k4 e) w//
  ^% ^% k" G; m) n0 l  k//
" \8 T$ K+ K0 [2 `& O; ~, b//    int period = 1000000 / TICK_PERIOD / rate;5 H  \2 ]& {$ q, f; A# p
//
$ w% ^/ d! d; s* K' B6 {//    if (! ad->is_running) {
9 i2 C. S/ O5 m# v- b//        Error_Block eb;  `3 I: ]" G" ]& Q
//        Error_init(&eb);
- C& f+ x% ]$ `; k8 p4 ~//) C+ |. W# N2 ~7 i* ?8 d- |& L
//        Clock_Params params;
8 R; t( J& q& ^  K# C//        Clock_Params_init(&params);
/ y4 w# G; ]0 i) Z+ W//        params.period = period;
$ @" W# f/ ~4 g' e4 C' q//        params.arg = (unsigned int)ad;' c4 H2 g% S% @6 `7 l) I* w9 h3 R
//        params.startFlag = TRUE;  l, [) s/ g9 A* m- T7 ~* @7 M
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
7 a7 R5 r6 n; G5 p1 L4 e//        if (ad->clock == NULL)
) q' Z; `% C( q) Y# q//            LOG_FATAL("failed to create clock");
' Z* @' J, j# E4 g! ^//
% K0 [; s" ]0 p% J% a//        Clock_start(ad->clock);
" G% Q  {9 R+ I% M. j( b, P//    }
3 O$ W8 h4 j* o2 @3 }2 V//    else {1 [$ w9 P( N! z
//        Clock_stop(ad->clock);5 W* w( ~1 m% M# ~  H' Z) s9 S
//        Clock_setPeriod(ad->clock, period);/ W# o, P- M3 l  R5 ?
//        Clock_start(ad->clock);
) J( T' u, G+ S9 ?% u//    }  k  O  ~' g- E- ?
0 J5 k5 K8 h2 g5 Y: X" H6 T
         // 创建定时器. @, E* a) g! N; F/ z
            Timer_Params timerParams;6 {, E6 S/ j1 t- f1 R8 S) Z
            Error_Block eb;
4 M7 _6 M9 z5 y& j- R+ `0 s7 O0 q3 g
            // 初始化错误块
# S; m/ g' _5 \5 b* S: _4 t% V            Error_init(&eb);
( P9 u6 `1 ~4 X& G% @1 }$ m            // 初始化参数5 @% X+ }- i& V. ?; n1 T! r/ K' _
            Timer_Params_init(&timerParams);( o( t2 q& i& l
0 Q6 C; m4 b8 {
            // 配置周期* S1 s! \, Y6 L6 O( D+ n* e7 P. i
            timerParams.period = Period;
" T0 Q) f' L: P' F* R. I5 U            timerParams.periodType = Timer_PeriodType_MICROSECS;4 v$ W% F8 `9 U$ j

! K/ H5 C/ g: N# t6 h1 K" k3 d            // 实例化定时器/ u+ o# v6 V# K$ ^; [. ~
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
& R7 R6 C" l3 q; W# a, O; x8 h0 ?            if(Timer2 == NULL)) j4 Z; M( \, ]2 N  x! m
            {
" j  b$ Y' |: ^7 O' p+ @! C0 F: Y  n, F                    LOG_INFO("Timer2  not start。。。。");
  ^8 I- x+ n; Q8 l7 M            }
. W$ V5 |2 D* l0 s* }! O& L: u, q+ y5 v  y8 e/ v) ^7 V
            Timer_start(Timer2);
0 v3 M5 [9 p- I  L8 _4 s% @% z. U4 v
            LOG_INFO("Timer2 start。。。。");
3 A# f1 Y; u% y. b4 X9 Z. n7 d6 e+ @1 c! h& d
    ad->is_running = true;
+ e2 l# ~' F5 |0 r  E}( u6 t, n3 {- m3 @" }
8 ]; P; ]( a$ ~8 v6 {: t
分享到:  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 11:43 , Processed in 0.037284 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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