嵌入式开发者社区
标题:
关于定时器问题
[打印本页]
作者:
vtinf
时间:
2016-11-15 15:17
标题:
关于定时器问题
您好:
" C8 E- F w: ~/ s/ r
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,
即用TIMER2取代clock
, 但是却产生不了 ad7606_on_ticked中断。为什么?
3 o% Q, ]* t% x
, k: d7 S% Z) g6 G. n* ]) [+ F! T
6 B U& B+ c. P) E& A
0 O. r( Y" h1 y, Y. Z
6 K# J5 B0 |5 k# e
/ I- X5 _3 a4 z
void ad7606_start(ad7606 *ad, unsigned int rate) {
' `) l1 p" O0 \6 w+ k
// ASSERT(ad);
: I6 B- s9 G! i8 v2 _2 x. P
// if (rate > 1000000 / TICK_PERIOD) {
4 q8 {# G) `1 ?6 Z
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
* F" j+ X* X, F+ d, R
// rate = 1000000 / TICK_PERIOD;
3 X& v( `; y. y! f: Y* X# B
// }
, g& R4 H* D; Q9 p H6 J0 P
//
9 U, H }) d* \
//
% c( r* a& M' g8 l9 a
// int period = 1000000 / TICK_PERIOD / rate;
/ E. @5 Y6 {8 Z3 B/ [* c
//
, }- V# f3 @7 v) n
// if (! ad->is_running) {
: t) a" |* T. H0 r/ M x
// Error_Block eb;
/ N! f7 B1 K9 `( L9 P7 J
// Error_init(&eb);
8 d: \* g" z) S% W- {" g* ^. d
//
; E6 X) {3 h0 d. z) j& q" j% x
// Clock_Params params;
7 K- {6 R0 ^' @
// Clock_Params_init(¶ms);
2 m, V; r" ~- F3 J5 k1 ?, [( l
// params.period = period;
$ L1 |: u$ R2 {* H
// params.arg = (unsigned int)ad;
; c- m. U: [% l0 x! g" g( U+ o
// params.startFlag = TRUE;
8 H* F) m+ g; t; l) a
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
; i& e( [% S9 n3 l3 v
// if (ad->clock == NULL)
8 z2 e! |+ e: N& j
// LOG_FATAL("failed to create clock");
! P& \# ?7 k4 p2 x% z- n
//
2 g6 i0 I* t! o7 F; E8 U1 b
// Clock_start(ad->clock);
( _1 @2 q0 s. N1 S
// }
' w% T/ a: d, D1 T2 r
// else {
) n# Z, C4 N9 R
// Clock_stop(ad->clock);
) S# f: d1 h9 f' B9 D
// Clock_setPeriod(ad->clock, period);
1 v1 K3 }& L+ u5 D: N. X
// Clock_start(ad->clock);
1 `; Q" {; G7 t1 t9 J ~6 m
// }
# G E7 A L+ M. l
9 C, T/ B) H8 }) X o4 s/ z6 m
// 创建定时器
% O+ s* z' S$ q* H2 F W
Timer_Params timerParams;
: @1 _4 r" r- @, h
Error_Block eb;
( J W! f! m& H
' h" d7 [' i, ^- ~! P( {
// 初始化错误块
. [- ]+ m5 D+ l2 E$ s0 ~, P
Error_init(&eb);
6 L6 {* J3 d4 {9 T
// 初始化参数
0 N5 T4 P3 c9 w
Timer_Params_init(&timerParams);
( K: C: L5 l* V& V& w3 j8 O) s! V5 p
4 J$ r3 M* p/ m$ _) v
// 配置周期
) R% ~: T9 x9 b1 U' Z6 j9 R+ X- M
timerParams.period = Period;
9 z5 m5 b% Y6 V/ p3 g: k9 h
timerParams.periodType = Timer_PeriodType_MICROSECS;
3 _- ]3 D. J" h0 {
9 e6 W. @- V% [ ^
// 实例化定时器
- ^6 }9 l M$ w* c& q$ c5 p
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
1 S) Y E( ~9 J
if(Timer2 == NULL)
$ b# I3 _! D/ S
{
' g* Q6 j0 ^% {7 Y9 d0 @
LOG_INFO("Timer2 not start。。。。");
/ f- b* [" X. F! Y9 j, F4 I
}
3 @) }+ E! p' x& m: r- j" ^
8 K; h/ r- l. G( N7 [% D. I3 V
Timer_start(Timer2);
8 i$ g9 A" a) t% i' n
) P: l* ?4 C/ b
LOG_INFO("Timer2 start。。。。");
% B/ d. g' y6 h/ }8 |" o
* |9 |% D# m1 o
ad->is_running = true;
3 B! l% [6 u1 c% g1 W
}
8 I+ i1 k9 ]! ~
* r+ {% |2 ~- `, v( a
作者:
human
时间:
2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4