嵌入式开发者社区

标题: 关于定时器问题 [打印本页]

作者: vtinf    时间: 2016-11-15 15:17
标题: 关于定时器问题
您好:( c/ H8 N: C( |; f# C
       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?9 d  P! h* v+ K, p/ \

0 l' @7 `( ?9 w' z$ I( G
6 I3 a! b. E; j0 y4 P! J# T' W: k( {. T
' P7 j" [+ K0 {

, p9 f# u9 X# Kvoid ad7606_start(ad7606 *ad, unsigned int rate) {& e0 q( `0 N, i1 }! D" p+ S
//    ASSERT(ad);
6 K& e& K! i( \6 D* W. n//    if (rate > 1000000 / TICK_PERIOD) {
) j5 Q- p9 Z! q//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);6 T  A; s) s: Y2 E% I9 _# o* v
//        rate = 1000000 / TICK_PERIOD;0 K, c' }% b9 Y  `
//    }
- g: O8 }* L$ A: |; c) L, Y//
4 }, }  d1 p* j! Q* F//
& o3 c1 v0 h, v//    int period = 1000000 / TICK_PERIOD / rate;# f. t' |9 s. K6 L
//. ?9 W0 ?( q0 i: K
//    if (! ad->is_running) {+ g& ?) X; j% v! [* P( z% G
//        Error_Block eb;) ~8 D7 J. n* ~4 O0 t5 a/ J
//        Error_init(&eb);
& d3 g8 v* ^/ d& M5 N//
, p; q) _' s& U3 `# x. N//        Clock_Params params;; p$ Q! T  V- n$ |) V( T, x8 y
//        Clock_Params_init(&params);
7 R" j$ L, C1 w9 o! Z//        params.period = period;
8 [$ y8 I% T0 p* e//        params.arg = (unsigned int)ad;
" p% [4 `2 i9 Z" l  O$ x1 ~//        params.startFlag = TRUE;
) q5 _7 U5 J! r  g" L$ ^//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
- O2 A! O' v4 u' K) G- x//        if (ad->clock == NULL)+ E, Z" v' T  d
//            LOG_FATAL("failed to create clock");* ^, R) f8 p6 D
//
, u/ p- A6 T. s5 S" ~//        Clock_start(ad->clock);+ a8 _4 T; U& n& d  n
//    }
* A3 K- t% e# G8 u//    else {
/ s+ `0 ~8 i5 ?/ C5 H* E- V//        Clock_stop(ad->clock);2 A" y  ^8 k+ q2 ]8 `+ X
//        Clock_setPeriod(ad->clock, period);  X: _# V7 N2 v8 \. C; K7 r
//        Clock_start(ad->clock);
+ _/ D( `' R) k; \0 S//    }
3 U8 y, P9 I7 C; ]9 V# ^. K* D7 q8 ^+ I2 K8 X% w  P
         // 创建定时器( a0 m! O5 I4 ]  W9 n
            Timer_Params timerParams;
- ^$ `7 j5 \' B            Error_Block eb;/ X. b# M: e% T
- @% r9 j# j2 b% T- ^' U/ W5 l
            // 初始化错误块
& w- G+ V* n" j; i- U& N            Error_init(&eb);: g; j) K5 U9 Y4 ]6 Y4 H) V5 V
            // 初始化参数
6 a9 C7 n+ h$ u1 b- {            Timer_Params_init(&timerParams);
/ V/ ~3 e1 V- f
+ K: d, q( T8 X) M% w            // 配置周期( D# R/ t2 H9 W( ~. l( h2 m
            timerParams.period = Period;
. N: U/ L7 V/ L/ E6 L5 v( M            timerParams.periodType = Timer_PeriodType_MICROSECS;
& D- Q: V# z5 W
% |8 `7 q% k: D' b0 W            // 实例化定时器
( i- Y* S. n6 }# b  d2 ]            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);. y; g  i. Q  d  \% U- G" a: O) \  J) O
            if(Timer2 == NULL)  r: d' S3 c) M
            {! v' F6 o% D, l" {
                    LOG_INFO("Timer2  not start。。。。");
4 I/ t5 N+ W1 B* G& ^            }  k7 X2 \" P2 e* v0 B
3 H2 o! ~3 L" {7 E( c
            Timer_start(Timer2);
" f' w" M2 g* K7 {" a. \2 z: ^3 G6 \' R" A# D
            LOG_INFO("Timer2 start。。。。");0 |( d$ e& F5 m0 {/ }6 g) ?

4 H- a; g+ @" ]" m$ Q    ad->is_running = true;
! [: T, Y/ W' H' A}/ [1 }/ w, Z* Q& W  r" j/ w  o/ M6 s. ~

4 k8 q% Y' g2 p6 D) ?: C
作者: human    时间: 2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4