|
|
您好:1 ]5 k9 Q$ ~ ?) C) [; h$ Y. Q& A
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?& e4 o# n5 K; N! Z7 g4 f: ]
6 ]; G1 K* T2 z0 K
% e2 Y) s* T3 @% {4 C0 P/ W* C) @5 h
: X5 k: q6 ]6 t- K3 V1 S k1 N
7 h% I' a+ ~0 x' U ^
, @" ^4 E" ` ?5 ?# ~: o' o+ F' C- \void ad7606_start(ad7606 *ad, unsigned int rate) {
+ Y7 R: Z* a: Y( d( f4 x, [// ASSERT(ad);
' j2 Z) v8 C" M [; x// if (rate > 1000000 / TICK_PERIOD) {/ \( z/ k% I0 z
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) @9 c# y4 L S// rate = 1000000 / TICK_PERIOD;
5 z2 V6 ^2 F2 ^' O+ y8 u8 }// }
# c# e6 E0 a5 B( [- E//
* g& Y2 {; A) {6 v* n//3 \* q! z0 }) ~7 x1 t% D. A) [$ l6 w
// int period = 1000000 / TICK_PERIOD / rate;
' H, w: P1 I K' D//0 g4 E; G1 W9 U/ l( Z
// if (! ad->is_running) {8 ^% V. P" n1 M/ ^
// Error_Block eb;" g, g5 B' P! Z, O+ T0 l
// Error_init(&eb);! m1 Y+ y7 y7 H# w+ N
//% u8 ^( P& a% _% Y+ y; q
// Clock_Params params;
4 Q# m/ J/ k6 v; z// Clock_Params_init(¶ms);( Z! q, X) |! g
// params.period = period;
# K" d* n- j) A0 o, Z a% k3 U// params.arg = (unsigned int)ad;
- ~# ?0 k1 n% C% ]/ K// params.startFlag = TRUE;
* S/ _+ T5 I. {% {// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
" D q! y" Y. [// if (ad->clock == NULL)
* \$ T. V& k5 y! h// LOG_FATAL("failed to create clock");
( [4 J6 |8 k9 b//* q) [2 l; r+ s% w
// Clock_start(ad->clock);# d/ N& s0 X2 d
// }
' L9 `9 c4 W% u" k9 \+ j: I, G; F" b/ J1 B// else {" s$ k& T$ `0 {7 }0 u
// Clock_stop(ad->clock);2 a8 x: j* O/ V0 H' I' s
// Clock_setPeriod(ad->clock, period);
3 R; d( U1 } w7 {2 F6 ?// Clock_start(ad->clock); |4 o3 G" ~% f8 g4 X( C
// }2 T; L a4 B2 X) h8 ?2 X9 I" h
" D/ Z5 n" l7 [ // 创建定时器6 w9 _2 t* X# T, Z" y( e
Timer_Params timerParams;; e9 E' M, T4 E9 x; S
Error_Block eb;# F% j! j6 i- \9 N" v" w- e
& E9 I0 z7 H, @5 W8 [: X6 b // 初始化错误块# m- U: @7 i5 S* ^- ?
Error_init(&eb);! P/ c8 Y9 e9 @* I9 e a
// 初始化参数
- m9 x2 S. N% r/ }& n2 V Timer_Params_init(&timerParams);( H- f, } q3 X4 i5 z8 h% D
8 N# d/ N: \# P2 s, I // 配置周期/ L r) m' x0 Y
timerParams.period = Period;. R8 f$ V4 U$ i7 B: P; k
timerParams.periodType = Timer_PeriodType_MICROSECS;0 l' v% ~ |) n X+ `
1 [; z. s3 e0 ] // 实例化定时器
+ M9 I; i y6 d0 M+ r7 K! e Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
6 R) v5 M, i; G) ~. e$ p& i if(Timer2 == NULL)5 t$ I% f/ }# r; }1 B
{+ C1 W- V( G1 V, r+ y' s4 ]1 F
LOG_INFO("Timer2 not start。。。。");8 M0 s2 h3 z% e% d8 t, o
}) _9 j- e6 t. n2 Z* i" E
" X' H0 E. T6 c( h7 v. y. w& ] Timer_start(Timer2);
, A) `- p. k9 F/ n5 Q
7 Y# b2 t* k2 H, C! ? LOG_INFO("Timer2 start。。。。");
/ V! [$ D/ i7 r. }4 a9 ]- S* S7 l F! d# ~+ l& e: |3 I
ad->is_running = true;
% C. G5 w& \. U8 h: U) R! b3 P}
, O% ? Y1 k7 t+ y2 Y4 H, i3 c9 a& ?$ z, z7 S& X
|
|