|
您好:/ x6 {$ w1 S) v5 s
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?; r9 |1 b) D% j2 f
8 k' [2 }4 h4 T3 w$ o
3 T0 ]9 b1 k( A, G
9 P% R/ d' J: |1 |: ~, x
7 U h( i' l* h" m3 K% }3 v1 ^4 q1 Y+ N: K
void ad7606_start(ad7606 *ad, unsigned int rate) {
2 \" ]2 f( X- ]2 }! z9 Z+ m// ASSERT(ad);! p& V& m6 @7 P# s; j0 ]
// if (rate > 1000000 / TICK_PERIOD) {9 L: {, F- u. d) I
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: J- i( d+ _8 e% a1 ~( J9 y7 K// rate = 1000000 / TICK_PERIOD;
9 [& e: L4 U5 ]2 @) N) x// }
1 R3 ^/ K) e$ @0 s. |. o$ S* ]//' D: \! G1 a/ p5 j' K+ i
//
$ w! L+ k6 d* `& A3 ?// int period = 1000000 / TICK_PERIOD / rate;
* M! a, _1 y* J) x" l f4 G//
2 z% z& u* V/ V// if (! ad->is_running) {6 [4 H& |9 ]6 ]2 m/ Q( X
// Error_Block eb;
# @6 V' C* x; J// Error_init(&eb);, [7 [3 b2 y5 z! M* S
//
) d1 o2 v K. P7 _5 Z// Clock_Params params;
' B3 a) A8 x5 j) F7 n0 v# n8 e// Clock_Params_init(¶ms);
2 Z& O0 m+ \8 \ o0 }/ A+ H// params.period = period;
! w5 w5 R2 ?* O8 Y' p& j1 }// params.arg = (unsigned int)ad;7 n& w1 V4 N' {4 _" K0 z
// params.startFlag = TRUE;
3 G2 V" m" m8 c( q: A% a9 F3 E// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);2 y! B. h, u2 k$ h: _; ~8 N, \
// if (ad->clock == NULL)
& H' o6 ^2 l8 I2 e O// LOG_FATAL("failed to create clock");
% Y! A! y$ q) X9 a/ ^2 p0 J, t$ E//6 Z5 l; i1 }3 e6 Z5 {% a3 c' R& \
// Clock_start(ad->clock);+ C0 p) A* G7 x4 g* x, a
// }- ~! }1 \: X* p" o/ }* o6 V
// else {
# _$ p3 _! `5 g# e3 t; ~% x// Clock_stop(ad->clock);4 l& t7 S8 L; r2 a3 k. C
// Clock_setPeriod(ad->clock, period);! e! K$ S9 ?+ m# }
// Clock_start(ad->clock);
/ S. G3 k1 Z' w// }
5 Y* P5 L' j( n9 K0 H5 t. g c" ]
1 ]7 N0 R' n; C d3 M T% _ // 创建定时器* B1 q9 Q( j3 U" U" ~4 L
Timer_Params timerParams;4 D [' x8 x; m q. g, T
Error_Block eb;
' P( B/ c" Z' D: [
$ X. T2 x+ ?1 j# |( S // 初始化错误块# X! Q( S/ Z1 [& a/ j. r
Error_init(&eb);
7 e: a5 B+ O M5 g: Q" c // 初始化参数
3 T: s- F( N7 |4 e2 ] Timer_Params_init(&timerParams);
& k; H+ ^) a8 \9 ~) h4 J4 v [: `! H. L5 F
// 配置周期
5 v: L9 @" L( _ q! @! o! Y timerParams.period = Period;
+ x& @9 `6 t9 L* J timerParams.periodType = Timer_PeriodType_MICROSECS;' R8 X2 S1 ^! T+ G9 t3 @" }
* X0 R# J7 _) s( |6 g // 实例化定时器+ [/ ~. j% R9 n) G2 h9 W& j& O
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb); b- z( e8 m6 C1 R- @% A3 j, [
if(Timer2 == NULL)8 m& K% f! ^6 _% ], B/ L1 h% k4 ^7 y
{
' |! `% R$ j' i* H6 F LOG_INFO("Timer2 not start。。。。");+ g# [6 `+ o, ^$ _9 U# @
} X* c6 Q: r/ ?! U& X
, y2 X8 a! @# n& ]7 J2 P7 g
Timer_start(Timer2);
! M( K( v% s$ J# v, K2 R2 B: J
! m% L, q6 K( i, ^ LOG_INFO("Timer2 start。。。。");
# f# `3 _& `& L6 d" L8 J Y, p/ k' }" q' ?+ H6 Y1 d
ad->is_running = true;4 ?- }% h1 Y& `' t; P1 m) n8 g
}
) P% D( R0 m% k* C; `; L& V: l) ~9 W" r7 k1 `3 r
|
|