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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:
) Z! M  X- c  a2 i- z8 C       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
; _0 u$ \- d4 e
/ w! p8 J+ R# a7 A! l: R
* r: O" q" m& k
) A# x# P# `3 [5 d4 t0 ^" \9 R% l, F- a. N% \9 }8 K

: l- i4 @6 s9 S( ~5 L" Qvoid ad7606_start(ad7606 *ad, unsigned int rate) {
- j5 A1 ^# ^/ ^- k( Q" }1 L//    ASSERT(ad);* y. j' E* J! V3 I! N0 J3 C; C; d% ]
//    if (rate > 1000000 / TICK_PERIOD) {
9 z$ [# x. w4 I( Z//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);! S# v* }, q/ T0 b  d! l6 n$ U7 I
//        rate = 1000000 / TICK_PERIOD;
2 V# ?; R& J- R% ?9 x( Y//    }! x; j9 ^9 _$ C+ N2 z- {. {8 D
//3 o) g" E: I( n& u- F% U( `
//5 L8 |2 d4 z4 R" y$ F' @/ s. w6 C$ Y
//    int period = 1000000 / TICK_PERIOD / rate;
* {4 q5 g$ I3 ^8 d! g+ J# a//
, T0 C' `' b! z//    if (! ad->is_running) {
# ~1 O! F7 I+ X' d( K( e//        Error_Block eb;& C+ ^5 Z- S* U& b* N& s
//        Error_init(&eb);
+ {8 ?$ C, a1 y0 ?0 m# n//. w$ N( j9 B) C: l
//        Clock_Params params;4 ^% Z* G& A- f
//        Clock_Params_init(&params);8 U" q  C. x% R+ t
//        params.period = period;4 ?. L  S9 q/ p  f2 V) I+ U" K
//        params.arg = (unsigned int)ad;2 e6 M+ }4 Z+ q8 d5 p7 i2 D2 E) ]
//        params.startFlag = TRUE;
7 b5 n" g1 n& d3 N8 R7 z//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);. q+ H3 |, h+ u: p- i
//        if (ad->clock == NULL). x) r& Z8 R# @8 G- v1 P
//            LOG_FATAL("failed to create clock");6 J6 j& g' U3 Z# ^: W
//
3 q4 F# c6 U! Z% V$ L//        Clock_start(ad->clock);
; f4 c7 \  N; g* k1 w! z/ i//    }
3 S/ Q+ h9 K: a6 U//    else {$ G0 C: ^9 n0 j) N- e( G! e# n
//        Clock_stop(ad->clock);6 B/ {6 K, \& M* Z' o/ I. U
//        Clock_setPeriod(ad->clock, period);
! k: {+ e0 z% f% a//        Clock_start(ad->clock);2 ~) _7 e6 v: K/ H5 {
//    }& k; B( I  V& }6 o$ d

3 V0 a; `" h7 C  r2 E2 [) m3 {8 e1 s         // 创建定时器
5 Y% {5 y4 m; [- w- }- S, [            Timer_Params timerParams;" m8 C+ U3 G  v2 t
            Error_Block eb;
/ C: L( O4 L  K8 o  b
: {3 r- @4 J# P( q            // 初始化错误块
7 L* a$ v7 y# o# q! Y            Error_init(&eb);3 m8 T4 X% E' b) k3 v  p! y$ K5 _
            // 初始化参数
' _, y' l: B, J* f5 }" j+ Y/ g" w. g            Timer_Params_init(&timerParams);0 c0 W6 }6 c$ w7 @* @! G; V3 ~9 A

0 i0 O) h" H+ i3 }, X% t3 f$ U7 A            // 配置周期$ Q8 e( z5 f) ]' M, j" B
            timerParams.period = Period;
, q) D2 V' K( D9 k            timerParams.periodType = Timer_PeriodType_MICROSECS;) _; v4 P& S! u( h9 W9 j8 R

) \2 Q) R# G7 u# L* ]: I, B1 l            // 实例化定时器/ L2 |/ l5 c3 e* b- V6 m( v4 t
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);; V( S/ ?8 q# @" Y
            if(Timer2 == NULL)
: I& H, ^& n( v' b: u# A            {
1 f* L9 j' [! q0 E* s* [                    LOG_INFO("Timer2  not start。。。。");
  Z% \) U( E9 J; h) r            }2 o% s4 c0 {+ A0 G* k4 P: G' p
2 ?9 H2 e9 p6 H  w8 u) N
            Timer_start(Timer2);
/ A. I0 P' m& A. I8 W/ D2 @- W
+ T3 Z' W) }/ H) T            LOG_INFO("Timer2 start。。。。");& @% G1 u% J) }9 B( A5 T' X- o
. X! o, V# i7 U9 \
    ad->is_running = true;
9 @3 B1 k" v6 T; }/ ^- F' U}1 b7 O$ L. w8 @( O- V

) N" k& X0 B' {1 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-16 03:13 , Processed in 0.041965 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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