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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:+ J3 W7 P, L. Y5 }* X  ^" z
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?' h; B) I, S1 p% N+ n1 E
; ?! b6 R5 U/ Y4 n' x, u! d) L

# I- \& A5 c( L0 A, s) W, e3 M  `  [! r

6 {7 V0 L  T, j1 F8 O: C* E( ^& {1 X! p; C
void ad7606_start(ad7606 *ad, unsigned int rate) {9 F# W5 |4 T$ j, k  o; {6 }6 C) Z* v7 P
//    ASSERT(ad);
4 e/ w9 {. ^2 E2 t; M- `0 x# L//    if (rate > 1000000 / TICK_PERIOD) {
% H5 [$ e2 x0 q! {//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
5 C1 p/ ^/ {  F( `+ S/ b//        rate = 1000000 / TICK_PERIOD;
7 n) d0 }+ L$ I+ X8 ?//    }
& C% ?, r7 t+ ]4 d//- r1 T3 S3 ~- s" \1 U" E
//
; u$ k2 h6 h4 B. R4 Q- l: P//    int period = 1000000 / TICK_PERIOD / rate;" Q$ O; a9 c) K. a7 p
//
  F  t. e" a* l' a, h, c//    if (! ad->is_running) {. N4 B/ b) A/ r$ k5 A$ ~7 c8 t
//        Error_Block eb;
1 j% o8 m% o0 @9 a) D9 G9 o//        Error_init(&eb);4 H3 ~7 E6 d4 x( D$ n/ ^
//
- ^( f$ z+ F/ J% X  Z& S//        Clock_Params params;4 k, ]9 b5 p4 X8 s4 h
//        Clock_Params_init(&params);
' B  o+ S8 u. `1 p# `//        params.period = period;
8 k! P# E1 M+ N0 B8 q! c//        params.arg = (unsigned int)ad;
( Y! S$ T+ ?1 m2 l( }& s. u$ o8 n- Q//        params.startFlag = TRUE;
" M# }) i! w! n//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);, r% t- a3 ]) W1 G
//        if (ad->clock == NULL)4 p9 H% S* ]+ i
//            LOG_FATAL("failed to create clock");
* w- j7 v/ @# _, l3 T: U* K& T//
! f: G# M' k: o: L* C. @0 ^, f//        Clock_start(ad->clock);
$ ]  u8 k3 z' }! c# v4 q' N, G//    }. S/ O* D  D$ y3 T% I
//    else {
% `, z/ A) n$ W  P# E( _//        Clock_stop(ad->clock);# ^- B2 ?5 a" I4 }! Y& y5 P
//        Clock_setPeriod(ad->clock, period);7 z. P5 `" j- ]$ s, H6 A; T
//        Clock_start(ad->clock);
  t# v$ b0 Y, i+ W4 O0 e+ F//    }1 r' S; }1 p6 `" q* ^6 A

2 U5 H5 \6 a: G* w' R# p; t         // 创建定时器
$ R0 a/ p: |* _/ F+ M' O            Timer_Params timerParams;
7 X# b; e2 S6 g" H7 N            Error_Block eb;
6 Z5 A, v5 @* p6 `* B7 @! e' a% k
6 ~- I. ]2 {3 c4 o$ k            // 初始化错误块) o  ^9 v) m2 {9 P! A/ a) ?
            Error_init(&eb);+ \& W: W. j9 \. l6 ^0 a9 p* C* x
            // 初始化参数
8 p2 Q  i4 R: ?9 I! O            Timer_Params_init(&timerParams);
' E4 @# z( w' z! W' K1 B
; _1 A& Q- ]2 m* `            // 配置周期, k! u# o! z: V  o  e; a# a
            timerParams.period = Period;1 p6 o! \4 }3 u7 q/ P' m
            timerParams.periodType = Timer_PeriodType_MICROSECS;
- D) ]; B4 O: j" n% @/ a& }) x7 J* V7 @, z1 P
            // 实例化定时器  ~. X4 M% F, h) D  i4 n3 q% _1 N( F& O4 X
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
0 B9 D1 p1 L5 M8 P' t6 `0 e            if(Timer2 == NULL)1 S1 U4 W- [! [$ m
            {6 Q) H' `9 j3 f1 y
                    LOG_INFO("Timer2  not start。。。。");% \9 o# _+ a( j: s" t; h
            }9 h# i* d6 I( v
# ~9 L7 N) j, Q7 n2 f
            Timer_start(Timer2);
2 g- K" h& }" k2 c2 R4 q
( S* n( E( u$ |: u            LOG_INFO("Timer2 start。。。。");
3 E3 I/ `) |8 R+ J6 q1 ~2 R, e& q) K; Y2 X
    ad->is_running = true;& c- C9 C1 l) X' z. ?7 d  u! z: l
}
, S4 {! U: j; ]4 {7 G
' {5 e; T- z. m- C! M9 q) z  t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 08:45 , Processed in 0.040530 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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