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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
: k$ Z6 H- q. I7 Z' U) o0 g1 Z       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
" q0 k; A8 u/ a+ [. f/ g$ \& s9 c& T6 X) t0 @
9 P+ `1 O0 B2 ?2 c
2 K' e; }% k; S
/ O/ C* `$ J$ R$ i* E+ |: e  ]; h

9 }  k5 i) B: X+ c$ f. }- m- L7 N  dvoid ad7606_start(ad7606 *ad, unsigned int rate) {3 K* s5 y. ~% K6 M% }8 l2 j) ^
//    ASSERT(ad);5 _* a5 e; P' k& c7 X
//    if (rate > 1000000 / TICK_PERIOD) {% ^% m  w& C) g7 D- ^
//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
, V* h' w2 T0 u1 e3 k//        rate = 1000000 / TICK_PERIOD;$ O# G2 t+ @: \/ e! l
//    }
3 S% D3 [! T( M3 q1 @' `" q# B//. ~2 K! ]" w$ y6 p8 Q; M! q
//# D9 G! l) ?* E
//    int period = 1000000 / TICK_PERIOD / rate;
3 P+ m+ p0 s) q) r: U/ v//
( m0 i$ D4 A) f- E7 [! N//    if (! ad->is_running) {
5 |3 J! f# b5 J! S9 d" A4 O6 i//        Error_Block eb;
- ?1 B  W5 J7 R, p" |+ g+ w//        Error_init(&eb);" E* S, [' y8 r& A+ I5 p. N
//
+ q, F  p# e# p1 ?" c. `5 P//        Clock_Params params;0 L' V% N3 V, j' ?
//        Clock_Params_init(&params);
* J( c8 l6 F6 e  m//        params.period = period;3 D$ V4 t, G6 L+ R) ?
//        params.arg = (unsigned int)ad;
. w8 }, v$ W4 q+ L2 p  r//        params.startFlag = TRUE;
$ }. g8 X; w$ b$ r& {//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);  @5 a- t; X# {. U* J# b4 X2 a
//        if (ad->clock == NULL)
" {* Z3 @& H$ U8 m7 X' j) k//            LOG_FATAL("failed to create clock");/ z+ F# B) e/ s/ L9 T! s, S# ^+ e
//$ l) j% j* a5 U# l/ ^
//        Clock_start(ad->clock);. T1 c" P) s: x  a4 P  H
//    }1 m1 ~. K0 t5 [& m8 D
//    else {
% g3 i% f, q* h4 s* v//        Clock_stop(ad->clock);
2 J; Q" Q/ Y* w- h3 G5 R//        Clock_setPeriod(ad->clock, period);" f* l; Y0 l' K. O  o' L1 ^
//        Clock_start(ad->clock);
, S- t3 V, o/ A% ^! b//    }- n: z; N6 C/ A% j2 [, l' k# a

, o# N/ Q: |0 f9 b! w0 L( N         // 创建定时器
1 U- K/ O" |) n            Timer_Params timerParams;( g9 @$ x6 k, T. |% k
            Error_Block eb;# a, Y1 M9 D4 i  U2 I

, _* T; T; s1 r+ `" w# x* V            // 初始化错误块
+ ~* y1 g4 i0 K            Error_init(&eb);5 V: G+ ?4 p# N+ a. g6 J
            // 初始化参数
8 O1 }# k/ v/ U# ?: s  z+ i            Timer_Params_init(&timerParams);
+ o. h$ h- Y; G2 ~0 M4 T$ U* d  E6 g% F
            // 配置周期0 S, l5 |, ^$ M0 Y
            timerParams.period = Period;
( g' j* Q. |! T5 b) s* e; S            timerParams.periodType = Timer_PeriodType_MICROSECS;
$ @& V( v0 S5 ?/ n6 @! A; \% d8 V9 u, ^! s: [7 j
            // 实例化定时器- K& c8 q# n; l/ U7 Z" Y  e
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
5 x, S; p: e+ T5 U" h% _# l: ^            if(Timer2 == NULL), v+ m# Z9 f" f# a
            {
' i1 \6 _$ A- X# a. Z6 F0 |  p9 d                    LOG_INFO("Timer2  not start。。。。");
2 {( Q$ L' R- g5 c; ?: l/ Y            }
8 o- {. O$ q" s: l& J( e% ~, k' f1 U; F& o, ]2 |" h
            Timer_start(Timer2);, b1 B9 `( M5 n
+ l* l0 Q, y# m
            LOG_INFO("Timer2 start。。。。");
, s, C( F' N7 b
5 P4 P5 `9 n' r. ~8 T2 v  C& Y( \2 c    ad->is_running = true;4 y" y# H5 x* z- ~$ N4 ]8 X
}
' T6 q7 Z- a9 J( q+ K* s
/ U8 Q4 B$ C1 O5 e0 X$ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 18:02 , Processed in 0.067124 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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