|
|
您好:
# k) X6 x4 @; T" S omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?6 q, c* u1 u0 I2 h
, E+ p9 S/ E( w$ `/ q9 X5 F
) | i5 v* A x6 L$ S& V. f# f
: @6 x6 |/ T/ @; T5 `8 o+ D
: a7 |1 l+ m' F- N. I) e# V, L9 w' L8 B/ e- W5 X8 o) h
void ad7606_start(ad7606 *ad, unsigned int rate) {
* }+ W8 m4 H* A& h// ASSERT(ad);8 |- Q0 y2 w E6 A- E: z X$ {
// if (rate > 1000000 / TICK_PERIOD) {
9 m, q4 }6 F0 S' ^0 O// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: N7 p* g* n' A0 n8 J9 ^// rate = 1000000 / TICK_PERIOD;' U y* d2 x" V" u$ d/ x9 D( O& `
// }
0 `# U# E. ^- j//$ `0 Y3 B3 Q3 [5 k# b
//) R5 T" \4 p) z% [: f
// int period = 1000000 / TICK_PERIOD / rate;
7 d: X; p! i; s6 [( p& I: T//7 j' |- L# n9 ?5 o$ {+ M2 ^0 A
// if (! ad->is_running) {$ L( M; H0 V+ i
// Error_Block eb;
- b0 A; d$ z2 o$ x// Error_init(&eb);( l5 \/ Y3 |1 N; u
//, a1 v$ R, h c
// Clock_Params params;
# M, T4 I) Q) s4 ^' Q0 O1 x% @// Clock_Params_init(¶ms);
7 C- @7 H$ A5 c; I# _3 A// params.period = period;9 h0 }0 I5 g! N1 o
// params.arg = (unsigned int)ad;
) a6 }: ]* K, H7 a4 ^- L1 y0 W' f// params.startFlag = TRUE;. B3 n1 y6 ?, `+ I# j! L+ a( t
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);# P) s& D X( L4 u' h
// if (ad->clock == NULL)- O4 S: B' ]: I1 W
// LOG_FATAL("failed to create clock");/ k! ^1 U, S% s
//# W' N) @- s* I) S+ }6 x5 [( t4 E$ ?+ D
// Clock_start(ad->clock);; V0 `8 F8 k/ Q( b- Y
// }( J1 ^( O* x! O2 v6 k* k7 R9 r$ c
// else {
7 _/ M7 s- ~' G B+ u: y) G// Clock_stop(ad->clock);
/ v) q$ S! q2 m$ c4 d// Clock_setPeriod(ad->clock, period);
% h) \8 S* d$ b' Y* W: T% t// Clock_start(ad->clock);' z( J, ~" H* \4 P1 g& ]
// }
8 A! M7 X9 g% Q8 g$ N0 R
; h) W* S/ b" h; g2 ~( E) I // 创建定时器
, e- g" n$ V4 J9 Y, N4 x8 _: F+ } Timer_Params timerParams;) c1 F j: a6 k
Error_Block eb;
0 Y4 U- }: W% F- d' d
& R w; s$ U+ x p/ Y$ q // 初始化错误块
) ?& A5 M8 }5 O2 z, m# r9 ^2 q Error_init(&eb);
; U" s! f8 I( p" p* o8 ]& [ // 初始化参数
! \8 p' l2 `, i, [( S; ~& d) q Timer_Params_init(&timerParams);5 f. w& S' S, {3 c0 [! y# n3 Q
0 f0 z( N' {, p' g
// 配置周期
% m* e+ q3 h. T% d; u+ w% i q timerParams.period = Period;% }+ d( t% W4 I( `& F
timerParams.periodType = Timer_PeriodType_MICROSECS;7 X7 k! j' p. x2 D2 Z
+ ~0 j2 F+ P5 i // 实例化定时器
9 d9 M: X* X9 m* r Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);8 B7 G# H' b; O# B1 Y% w: S: e
if(Timer2 == NULL)
- I" }' U! c8 n {
$ e6 y" M0 A3 q, A- v; ` LOG_INFO("Timer2 not start。。。。");' {4 r# u# Q* Z8 [) v4 O
}
5 J* o5 i1 ^! ]& j. G" A
' K9 I: q/ X9 k% n( I8 b$ I( S Timer_start(Timer2);! ?+ B. X1 F& a) f7 f
, J7 v, b0 o, J3 h/ L5 y& x LOG_INFO("Timer2 start。。。。");
: M% ?/ P7 ^+ E3 B5 E% x/ h6 C2 e$ g* g
ad->is_running = true;
( h& q/ P7 n! m/ y- E+ f2 g}
- x$ J1 g) @; X0 I4 M' B9 `) k& B9 v
|
|