|
|
您好:) B) i3 Q* |: l7 }
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?8 l1 u; w$ r" Y$ P8 }. B; Y
# q4 x7 I: n. e4 T4 ]5 t) I: j& M' E7 U: @3 M9 Q
# |# G) O X6 J$ P: N U& Y6 K
9 [( b8 d( o, h% M3 w+ A$ v. o' R' ^6 V& X$ C/ d6 \4 Y+ L
void ad7606_start(ad7606 *ad, unsigned int rate) {
1 R( J3 p+ ]8 x2 U6 ]// ASSERT(ad);3 [% G7 a$ f9 U# X# T8 |
// if (rate > 1000000 / TICK_PERIOD) {
7 u( k* f- |% u% `& d5 W& N// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
2 i1 S( ? m* P/ J5 k- _// rate = 1000000 / TICK_PERIOD;9 n! L& h! ?$ P, q6 h$ L$ l+ x
// }5 ^4 V$ L& j% v3 ?4 \! x
//5 b3 y2 B' `. R3 S7 A
//
) G& B8 L5 g8 u( e6 ?// int period = 1000000 / TICK_PERIOD / rate;+ |) G5 V; y4 u
//
; \" \6 s0 \5 t; j4 l3 @8 a// if (! ad->is_running) {# ?, D+ o# Y2 p" `7 D) n
// Error_Block eb;1 t! V. f* A* s/ f E& ^, s
// Error_init(&eb);' t# W1 @. K3 w( x3 s
//
! l& g/ Z# l1 j// Clock_Params params;
* h- v" e! f, B4 T$ k// Clock_Params_init(¶ms);% Q/ B' p* F) _0 }5 F# e
// params.period = period;
% r6 a/ S7 s7 m4 _// params.arg = (unsigned int)ad;7 i! `0 }' [0 c4 n+ y- J8 Q# M5 T
// params.startFlag = TRUE;, k6 N* J! Y1 s0 k9 f4 x1 Q
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);3 n: L J5 ]' B8 s7 d2 c' ?& I
// if (ad->clock == NULL)
. A0 m) a6 z4 ?" A// LOG_FATAL("failed to create clock");2 ]9 a; ^3 F/ @) W
//
$ B" d' }9 [, J* [ Z# w7 K// Clock_start(ad->clock);
- m- `4 G! l0 L Q% F( P1 S; o$ [+ p// }4 B n5 \9 W# e8 w' H* I( ?# ?
// else {
5 V Y3 g3 S8 h- ~0 D// Clock_stop(ad->clock);
; g7 I0 @! x% j. Q9 C" c6 U$ {. `" y// Clock_setPeriod(ad->clock, period);
2 h4 ]7 `; P# G+ m# a// Clock_start(ad->clock);
$ d% B4 D) e5 O b/ A// }
1 q/ I0 k B" s9 K* n, z, l" V6 q( C) q* L9 ^3 H: z* s
// 创建定时器4 E5 v2 X9 a- {
Timer_Params timerParams;# I6 z2 d' L# H* {0 \7 o' D
Error_Block eb;& \. n/ r5 i* ~
1 j) x \3 S2 }5 S // 初始化错误块 t1 X/ c3 D1 P. C
Error_init(&eb);' E* ^8 q, S* J3 I7 ]3 e/ e
// 初始化参数
4 O; H* r/ n( J! b% y) h% s% j k Timer_Params_init(&timerParams);
2 y2 w3 n F/ e- h. D; X @6 O% V% t& S5 z4 |
// 配置周期$ @' g* X) D. ^4 N) n2 }
timerParams.period = Period;
# `& J( v) `1 x& H' U5 ] timerParams.periodType = Timer_PeriodType_MICROSECS;
/ p# g. U$ N( }. O- B! J4 M8 z
+ j% H) I$ i# ~" P1 t // 实例化定时器2 b8 L+ o9 z. s9 r3 [1 V" f: v3 X
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);" B. a8 _, E, X
if(Timer2 == NULL)
( f, t7 E1 s8 {% T! ^- \( g# R {- l% L+ v$ ?+ n& ]
LOG_INFO("Timer2 not start。。。。");
. h& p' L2 O5 t! O( m( X0 E }
6 E# S9 h6 s6 l# O! A' f, S* w x8 F: ^! D' u, e
Timer_start(Timer2);/ b. t# E' X* _* r' u1 ?
1 \% Z5 X: N; l7 t1 t4 w1 p- q, f" l
LOG_INFO("Timer2 start。。。。");
! k, T1 M5 d0 [. @+ o! a1 L; X" W" \) C& r
ad->is_running = true;
& K: P4 @4 i. B4 I5 y8 O0 I& ?}
$ P9 U/ F0 L- h8 {6 ]
& ]0 `0 ~* g# b) t/ S) [) A |
|