|
您好:
% W/ p5 m5 }8 f- [ omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
3 k2 v5 C( f- ^4 v. `. R0 G! ?& P* `* A
+ K7 L2 D O% J8 p! M: B
% c& G; X9 s' f% ~, w. J
1 I# ]* A4 M. m \" ^1 d; T( Q6 F& ~1 {1 d o
void ad7606_start(ad7606 *ad, unsigned int rate) {
- T! ?* f9 I" I: U// ASSERT(ad);3 O) | R, K6 r7 ?" B) [& o
// if (rate > 1000000 / TICK_PERIOD) {- G- u$ q) b: Z6 a8 j8 t3 ~
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
/ A8 e2 n- x$ F6 j3 w" |// rate = 1000000 / TICK_PERIOD;
/ v x2 G; u/ P. j" `" m0 s// }2 h- R4 x/ e; ~9 l/ \
//
. }; X y) _6 D+ v8 S9 }//3 ^% p" A# `9 V5 M" q6 _. ^- s
// int period = 1000000 / TICK_PERIOD / rate;
" _+ I! u* {, {% _- \//4 b9 y2 U! [3 v: d- O( X4 o& X
// if (! ad->is_running) {) Q/ m0 p" l/ v! S# A
// Error_Block eb;
, X6 D, b; M0 A/ s// Error_init(&eb);
8 c+ I7 o; A( G2 \& u: _//
' a7 u$ Q" M9 U) p// Clock_Params params;
! Y. n G0 d, e( `9 P# I! O// Clock_Params_init(¶ms);
: c: G8 x0 ?# Y& G h1 a! L5 `+ ?2 W// params.period = period;
2 ~, T( u6 Z* E% T- p, v- M) t// params.arg = (unsigned int)ad;3 x0 c l: k# f5 F6 S- s% `4 i
// params.startFlag = TRUE;
/ a" P7 J& v( K// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
# h6 v/ f# Y; t8 t9 e// if (ad->clock == NULL)
1 E2 q$ M% S! s8 J: b* t. {// LOG_FATAL("failed to create clock"); Y; C4 N# W0 ^
//
4 K& O" P3 t1 W' G/ z* u" v3 V// Clock_start(ad->clock);4 V; b$ z3 G+ T- i- e t" h+ L
// }
, n; J8 n K, o( ^" [/ U% Z/ U! g// else {) O% L8 ]5 _. A
// Clock_stop(ad->clock);8 v8 m( z d* P5 H4 q4 | i8 d% n
// Clock_setPeriod(ad->clock, period);
' ], O" _! n! I// Clock_start(ad->clock);
$ T8 I/ M' |. R* i% Z1 ~8 [// }& }6 H& G3 w" ~* Y. E
# ]3 r; i$ m$ ?! h9 P* _4 s // 创建定时器
) z# Z2 ^2 j5 j/ f" ~% }" c: E Timer_Params timerParams;" W t8 V, z) \" K( c
Error_Block eb;
2 i5 d8 o s: k/ B) R X5 {' i8 B$ n8 k( y
// 初始化错误块
. L. _7 d. H# C4 a1 M Error_init(&eb);
3 G" N1 T! y! V. f/ `5 N5 C // 初始化参数% D8 T' \* l' D# t( S
Timer_Params_init(&timerParams);
9 e! w9 j0 s6 g- \! M' J" F% J
1 ]- z0 Y0 n4 F" w // 配置周期3 a4 |. E! F7 T4 K
timerParams.period = Period;
G& u# S/ x& j O3 @( Z2 ?( T timerParams.periodType = Timer_PeriodType_MICROSECS;
' N9 a% O/ n0 Y9 r) h9 f+ v- v, B0 {% Q/ F
// 实例化定时器0 M3 B& l1 ?' J6 |& i: x' k, a
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
+ F) O5 J: v. U, X" f if(Timer2 == NULL)! E* W/ J) N6 C$ N! }% X
{( H9 o- {- L6 H# B; B
LOG_INFO("Timer2 not start。。。。");/ y( v. O% f( M. F; [, Z1 U' p
}2 g9 R5 j/ C) C" D
2 D9 ~& s/ X1 \, @1 c$ G Timer_start(Timer2);# s3 L5 b) ]' R- J0 b& Z2 k: u, R% P
- v/ X. S- |9 w# \ LOG_INFO("Timer2 start。。。。");6 Q. t" s' @: t& ~) Y
/ f2 P% K) V9 ~- R ad->is_running = true;9 W! B! c2 }+ W" w
}- } L; [% {" U# `6 ]
% B- k8 j5 n1 ?
|
|