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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:+ N  G7 A' F  v( L: C
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
( u, m9 E* h$ ]" E3 f$ U; D& r2 g4 w- \  {

3 d: u7 K0 n* B# g1 h/ }. _/ Y2 ~- c4 k/ r5 z5 |( L
. N( y* g2 w( t- X1 X  [0 O

& t. J( `) e# F  W7 |4 @  Vvoid ad7606_start(ad7606 *ad, unsigned int rate) {
8 ], I2 h0 D; Q& Q! V//    ASSERT(ad);" I5 r' R- O5 ^' _
//    if (rate > 1000000 / TICK_PERIOD) {
- ]& {, U* W+ L$ t! d//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) N  z$ H' U$ C$ |, B. B//        rate = 1000000 / TICK_PERIOD;
$ B1 E; U8 W  b  `# _//    }' R8 Z  o0 ~6 `& u& p
//% G1 o) Z1 }9 R. R
//& M; k* \2 P2 n( M0 ~1 h
//    int period = 1000000 / TICK_PERIOD / rate;
, D. x% q# f  |4 x) L//
$ ]$ b+ Z+ x3 C1 m. O! P  W, |//    if (! ad->is_running) {
1 h# E6 j! u6 Z/ l( f//        Error_Block eb;! [* ], {! [$ j' c8 c0 U! W7 d* Z4 O+ S
//        Error_init(&eb);2 l8 @0 Y, W# \. S; v, a+ B6 l
//3 k$ q0 o3 r. o/ w7 M( \* p
//        Clock_Params params;9 r) D& t% p+ R
//        Clock_Params_init(&params);
" e3 O6 ]$ a$ D/ k//        params.period = period;
6 [: M- A9 ]) R' D//        params.arg = (unsigned int)ad;9 W  k2 z. k. @9 S
//        params.startFlag = TRUE;
9 H  k1 X4 d& J* h: D, w3 R8 J//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);9 i# o* T2 f( J% ~, j" u3 N
//        if (ad->clock == NULL)/ M0 g/ s9 D2 Z, P9 L; X
//            LOG_FATAL("failed to create clock");8 d8 v- {( M4 ?; J5 R
//7 P& a8 k2 j0 j9 v5 o6 ~7 p# E
//        Clock_start(ad->clock);" s1 s4 l! r* M  a2 l9 b4 f1 ]" r
//    }- e8 z- p* z. c- D" u
//    else {6 C4 H! l4 X) V
//        Clock_stop(ad->clock);
3 R9 I7 D# J4 w# u4 ]) f5 z//        Clock_setPeriod(ad->clock, period);
  z: T8 }; K- n//        Clock_start(ad->clock);
! V0 c- x6 p* r+ u. j//    }
" @0 L3 S5 |4 L
1 K, ]1 M- ^  c. _( Y5 b9 ?         // 创建定时器% w$ f; b9 E2 z; b8 W" {
            Timer_Params timerParams;
# `6 _( Q* |/ X0 H/ S            Error_Block eb;
+ s8 j  P5 B5 E/ V. X5 K3 Z" X  h
5 `0 u: ?. t  ^7 ?4 G6 _: W) i3 I            // 初始化错误块0 r% R. T0 w4 x* M5 V
            Error_init(&eb);
4 _/ J  L: Q* `5 v            // 初始化参数
) N2 h4 ^4 W7 i# ^            Timer_Params_init(&timerParams);
: M4 J  v9 q% M2 K( a) `/ `4 Q- v" P# Z2 c' e
            // 配置周期  f, h0 c( G: A+ t0 l  q8 ^% R5 O1 y
            timerParams.period = Period;' b( u/ N% o4 C# N8 Q0 {
            timerParams.periodType = Timer_PeriodType_MICROSECS;
: F6 `$ w) U5 b6 G4 j
1 p6 f- V1 X; \1 Z( N, W% x& ^            // 实例化定时器: C) }  T  ]5 M5 Q# e# T
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);2 m8 K, b; I) N2 M, K# s
            if(Timer2 == NULL)
* k* W1 [% M3 }8 ]: x& x0 Z            {7 x* E4 G4 A( z% y
                    LOG_INFO("Timer2  not start。。。。");: N6 `( g! ~. f/ O8 ?" Y
            }
/ {: O2 ?& T& E* T/ K+ |4 ?9 |
            Timer_start(Timer2);+ J5 R3 y0 S/ I+ r( X: j' o5 q+ I) _) [

+ ?3 x2 A. Q4 b( L- f' N# v            LOG_INFO("Timer2 start。。。。");4 s, l8 Y; s+ F* ^3 U: j2 h- Q

# m7 M3 c; g4 g" _$ i    ad->is_running = true;* U- M  N" @. j
}
  i* q0 u* E6 W' m0 ]# B) V, U" G2 p" z6 p% N% G8 q/ G+ ?) v5 O
分享到:  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 08:12 , Processed in 0.039831 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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