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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
您好:/ F. H0 r7 S0 A/ c$ l. P4 L" W
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?8 x6 ?. c$ @3 u! r9 {

  F, l' Y  y$ j9 Y) J
* p5 h: v3 H5 u6 ?
5 v4 L" _2 M- z# J; f6 B7 @( S
% Y' F& N; J4 c# T. ]' q  z, Y- B0 J
void ad7606_start(ad7606 *ad, unsigned int rate) {
; X7 e6 i1 _1 H/ q* V; E2 K+ {//    ASSERT(ad);8 G4 R1 I2 P1 i4 }4 X, V
//    if (rate > 1000000 / TICK_PERIOD) {
4 l0 x4 {1 ~* i: I/ k//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);6 y7 F8 s# ~+ C6 _% I
//        rate = 1000000 / TICK_PERIOD;
+ {7 w  n7 j, W//    }) x) d) ]: z2 ]# A
//
; v) t* S; Y# y' C4 E) K( M: k//
& ~4 T4 L+ f7 W3 T0 c//    int period = 1000000 / TICK_PERIOD / rate;
+ l, D! [$ [( q- S" [4 f//
! t( B0 R, a6 M1 _" X. P9 w//    if (! ad->is_running) {
) ]- A. ]6 z* ~/ T9 T- W//        Error_Block eb;, j+ x# G3 E+ m9 ^: ?. C
//        Error_init(&eb);
5 l/ n! {9 C; j//! c9 j* E) k% y7 D# T
//        Clock_Params params;, I+ n+ x$ n! E6 D7 L+ G
//        Clock_Params_init(&params);9 @- U+ P9 o5 t0 H0 j0 }4 J
//        params.period = period;
( C! ?) G5 O- X# r$ ~9 U//        params.arg = (unsigned int)ad;! J' c1 E; Y/ s- D
//        params.startFlag = TRUE;9 ]9 z7 O9 W! m1 v: e9 E0 w
//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
( T% @9 c9 [8 q7 f3 U5 b. C//        if (ad->clock == NULL)# B# I" G/ _) A8 t$ C) L
//            LOG_FATAL("failed to create clock");: U  o4 F/ B0 O5 a% O; ?" o
//
9 \4 [1 A* y+ j  e//        Clock_start(ad->clock);: Y  e; q3 F* E: f
//    }) v% g* s, l* K( C  Q; l  |
//    else {
6 @. N& ~" f* d  g$ l5 z: o//        Clock_stop(ad->clock);
# `# l  P) d/ O//        Clock_setPeriod(ad->clock, period);5 C; A" C$ }8 Q' p
//        Clock_start(ad->clock);0 Q8 U- O( d3 W7 v
//    }
/ c  p4 \, V. q' N" z7 T" F( X3 Z  V- ^
         // 创建定时器) ~4 V( v# e, [5 F5 J5 ]
            Timer_Params timerParams;
7 t! J6 ]' l* H- X9 q) C            Error_Block eb;& |! u5 J! T: Z3 T# W
7 r  n! O. B1 E/ V5 H
            // 初始化错误块* S' a) q& N2 i* K9 J, L) h
            Error_init(&eb);/ C1 ^$ ?1 U9 V, g! ^2 y3 ?
            // 初始化参数6 e! q6 I" E8 q, |6 S* C  g
            Timer_Params_init(&timerParams);
6 `; N+ b3 x1 }- T* ^8 V! ?- x+ I
" W0 q' d3 ^  `7 B: P            // 配置周期
7 O0 n5 s$ Z, ?( y$ P3 K$ G            timerParams.period = Period;
# M2 E4 M* S  X            timerParams.periodType = Timer_PeriodType_MICROSECS;
2 f, G2 z% D7 S' b
4 d9 u9 r; S5 n3 o2 r            // 实例化定时器
: }8 \2 o- R4 y            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);0 L, p# Q' O* B7 g' M% z' c
            if(Timer2 == NULL)
# R  Z' u* w9 d7 b/ y4 y            {% D- S$ M9 m0 Q& s5 F
                    LOG_INFO("Timer2  not start。。。。");5 U3 W( g5 H# L, i
            }6 W- B* s$ t9 L  V5 D
7 t9 ]' T2 H2 x" L
            Timer_start(Timer2);
+ o4 e: S6 h! i9 Z; O9 {7 j- W# ~  x* ?5 S9 r  H
            LOG_INFO("Timer2 start。。。。");! Q9 u& D1 X3 u. Y9 R

7 w2 n7 Y* ~# q    ad->is_running = true;5 j8 m5 `  j  u; e9 y
}+ C3 A, F# s9 d" V  ]" D

' _  E# _1 Y, B  H" i
分享到:  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 06:44 , Processed in 0.042704 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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