|
您好:
$ M% w3 p G0 X% _+ T+ d omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
: X4 `1 z3 U* N; q' `; N
# f. \+ ^$ S& T8 [2 a) U$ {
4 R* a% I: f0 I" F( s W* d( C4 u
" u$ m1 k; e2 @% I4 E! y% n l* G+ Y, c# }
void ad7606_start(ad7606 *ad, unsigned int rate) {. h* T0 N, W8 a4 v+ Q) [5 v" c* r
// ASSERT(ad);
) f; \$ z, ~8 X/ S. w% M- u6 h6 U// if (rate > 1000000 / TICK_PERIOD) {
0 ]! }/ h7 _! }# B2 E// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
# G9 ?9 W/ `1 y. B7 D, Z// rate = 1000000 / TICK_PERIOD;; S7 q% A/ r( w, W+ k3 v
// }1 t% ~7 I4 @6 b5 c
/// ?4 H: m! a: ^9 M/ }$ c, N, b
//! O, r6 K8 ]$ }4 i
// int period = 1000000 / TICK_PERIOD / rate;
# x( k$ G: J; W, @3 T3 ^5 a//& v% Z" x- B, F0 f6 T
// if (! ad->is_running) {
4 E$ }- K8 h3 J) e7 [8 p// Error_Block eb;6 c7 `& h7 p/ A: _+ E' O1 O% @4 H% B
// Error_init(&eb);8 w4 u6 W. j. o0 ? d0 u Q
//$ `- t, P+ U% s
// Clock_Params params;
0 m' R* F7 Q( G i// Clock_Params_init(¶ms);
- U, y+ ~. o# }8 t% r) b1 ^3 {6 P// params.period = period; q) l1 s( L* _
// params.arg = (unsigned int)ad;
! [* o1 H" |4 @// params.startFlag = TRUE;, d t5 ~% V' I0 c, A5 f; \
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);9 L+ u3 C S$ l9 S3 \7 P
// if (ad->clock == NULL)
) O: h- P3 `& E; d4 X. I m f3 w// LOG_FATAL("failed to create clock");9 R' \. N9 p2 Z$ B5 G7 e
//( w& r- o8 y) X
// Clock_start(ad->clock);/ y/ r! u* E( r' o
// }. O- L; G! u( M- s" B, G; D
// else {- `$ E' q+ F! K4 D
// Clock_stop(ad->clock);7 y8 f+ O3 [2 j4 ^4 P4 A; J
// Clock_setPeriod(ad->clock, period);# F: `7 |5 R8 O6 P6 q! @9 H1 L
// Clock_start(ad->clock);% C& b' [ U# e& k5 Q
// }
/ l- e' B4 L6 `1 d2 `3 J' x' w% Q" N3 r+ ?3 d; O
// 创建定时器
8 K m1 Q! W% I$ R( Z Timer_Params timerParams;$ q* ?+ t3 L- ]# m2 s) f' }1 n
Error_Block eb;1 Q& y6 Y9 X* q: A- F. b4 Z
: c6 S1 J; k3 S1 d- i6 t/ ` // 初始化错误块3 u; \ j6 ?0 W: m0 A0 q/ c3 w
Error_init(&eb);
$ ]6 b3 E+ l: x/ U1 p! ^ // 初始化参数
$ K0 @- q$ l# H5 a8 R Timer_Params_init(&timerParams);/ y: S& Z) M& R# J! k: T( o' _
+ D7 T$ N, S; y$ _% M6 |# u // 配置周期
c3 w" X6 L6 {' W% A timerParams.period = Period;
3 X2 n# V4 \; o V0 I timerParams.periodType = Timer_PeriodType_MICROSECS;: f- C1 Q" `2 ?* E
) }' U: A. r" J1 n
// 实例化定时器
0 O" D0 C2 y7 w) E2 i0 c0 D* T Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
2 J+ k9 \3 }% _, B: F: p if(Timer2 == NULL)9 |, }; |" a' M
{) d* U5 m7 n j9 g- K. f
LOG_INFO("Timer2 not start。。。。");2 M/ o# D$ h8 N% G( B
}4 Q. x5 E7 g5 a6 O4 Y8 F
+ f' w# P/ A& q+ `( ?$ } Timer_start(Timer2);
8 ~5 V& a* C: S1 \/ I% [* \. ]
, ^! C( | a& ~0 M4 h: n- Y LOG_INFO("Timer2 start。。。。");
8 v7 B& B9 x9 H! y4 b. U3 ~. G# x$ |
ad->is_running = true;
& _% E0 M! Q+ o# D0 ?' L}% g4 J# I( A, z2 g( ]1 w2 P
9 p- C- x4 o" q% r/ [
|
|