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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
& k( D1 y2 C# |! g$ |) N       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?1 Y0 `  Y6 Z3 }5 z! c+ G0 y; E3 u
) y, R; q% Q; g3 v( K& |

. i$ W7 y3 I# E7 N0 _! I
+ g$ j, ^1 }$ n( }8 u. u# m" ^6 D% F$ k' T. y0 Z2 F4 ?. i% f/ f* Y6 j

$ L1 k' b/ g, k; Z8 P# Q7 Ivoid ad7606_start(ad7606 *ad, unsigned int rate) {
4 v5 j: e7 i- n8 p3 |//    ASSERT(ad);! Y# e$ ]0 K. _+ u% H, A! b( ?
//    if (rate > 1000000 / TICK_PERIOD) {
4 n& ^! ?7 C2 P; ]9 |! c5 Z( h//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) I5 j  ~1 v/ Z, c' k5 L9 u//        rate = 1000000 / TICK_PERIOD;
4 i# Y) Y9 o5 L$ j//    }
3 W: G, ~+ }. F  ~; ~0 F3 E//
8 P9 }& q1 ?" o/ y0 V//8 H5 P3 x6 R; V1 _6 x
//    int period = 1000000 / TICK_PERIOD / rate;
7 G1 E9 ~% x8 P# E$ b* y//
, G; r* A" n% J" J& d9 j# X//    if (! ad->is_running) {
# K5 |* m) c. g1 s//        Error_Block eb;
3 A' o  _7 j  L" b. d//        Error_init(&eb);# \1 J2 C* q/ E/ {
//
, a- g4 l1 Y3 U( i9 |0 ~2 o. ]//        Clock_Params params;
& D- P' T6 g/ H! c/ O; @//        Clock_Params_init(&params);
7 O/ i) D% s% o/ s* N$ b; s//        params.period = period;
/ {' ]* c6 {& _6 I//        params.arg = (unsigned int)ad;- L, h% S) ?  C  m
//        params.startFlag = TRUE;+ ]( }  w( @+ o7 `1 i
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);" d0 q: _6 ?! B5 E) B2 R
//        if (ad->clock == NULL)( n" F8 m1 {6 L' a' B3 ?" g
//            LOG_FATAL("failed to create clock");
' W/ J( L* C' d//
& f+ \3 d& S$ Q//        Clock_start(ad->clock);
! S1 B0 M  k) ~; G/ S5 E9 C//    }9 T  K# c: H% n
//    else {( G% Z1 `! F$ A$ F+ j3 j( D
//        Clock_stop(ad->clock);! P# a. U' R7 o+ Y
//        Clock_setPeriod(ad->clock, period);9 I: j5 k/ y/ q+ [: x3 n; b! B
//        Clock_start(ad->clock);" [! T- Y6 {; m! D
//    }% e, L9 ^& `) j( g& f" b* \6 W

' e8 ^8 `  a2 V$ ]& n         // 创建定时器
% T5 }& ]% d1 r3 g; p& y. M            Timer_Params timerParams;
0 e! v. k' f5 |7 `; f            Error_Block eb;
6 r; U6 C9 Q/ B  k; ]2 `: `# {3 x2 h; ~' Q. A4 h, Z) f
            // 初始化错误块
3 X. y6 I" t/ ?& E            Error_init(&eb);+ W% T6 ]& R9 I9 E! E2 f' O0 z
            // 初始化参数
( g9 c' u  T, e+ j0 i- K' n            Timer_Params_init(&timerParams);- W1 b9 q2 F: o! H! ~7 m; N

8 \$ w0 s& ], B; ?9 [0 U8 ?6 A7 e' c7 U            // 配置周期7 {$ q1 |1 Y& v, G  m1 s8 r
            timerParams.period = Period;& A( r8 _" R1 g
            timerParams.periodType = Timer_PeriodType_MICROSECS;
+ W( ^" W* B9 E8 s7 C+ i5 o  }
& z  x9 y; m$ o- I            // 实例化定时器
$ X0 e) r5 X4 c, C: \) e# G* a' H' R            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);4 A/ Y: r9 t1 p; v0 I  Y: j  `
            if(Timer2 == NULL)
/ \) d" E  @6 r2 [            {9 M' w8 H1 @, y# @& {
                    LOG_INFO("Timer2  not start。。。。");- Z9 E9 v# y7 t5 t* n3 R0 j5 c
            }8 Y- E; d' z' y8 ^" X
  v0 S* D* e+ q$ x" p  Z! U
            Timer_start(Timer2);2 B, g# C7 ~- g& \$ J# F

0 R  l9 Q6 w- F) S; C            LOG_INFO("Timer2 start。。。。");
% z6 ~0 D% a; `7 \; g( W
7 A2 V& [+ D4 n8 L4 p9 l5 {    ad->is_running = true;. o- W  ?; f8 y6 l+ B7 v! c
}6 q) c( X4 r  L. s7 Q; l2 _
0 y3 N& i& `0 o6 [- d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-17 09:32 , Processed in 0.038951 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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