|
您好:4 c1 z) P( `, ?% l2 B( c# {; K$ }/ V
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
4 J0 d$ ?7 H1 y7 p, g! l& ]* b/ f2 _; d& s; L
8 z% d' T# C2 I5 a
& @6 U5 {$ C( H) [
4 @, m( y ?( _, j( Z, i
7 [( n! {9 H% s/ ~void ad7606_start(ad7606 *ad, unsigned int rate) {- R" A+ v1 A) j, e6 m5 {. q6 l1 s
// ASSERT(ad);
9 A( u, Z' F% a9 C// if (rate > 1000000 / TICK_PERIOD) {+ Y8 s( F4 j, j/ P0 x
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
9 ?9 |$ u* K( J# Y$ `0 g# R// rate = 1000000 / TICK_PERIOD;
; I+ c3 Y# ]' o7 p( ]// }$ l, x8 k) r3 n( J2 C5 v
//6 V/ r% z# j0 z; o$ T0 h3 S
//
! Z v, U x2 F6 P3 p// int period = 1000000 / TICK_PERIOD / rate;& i* u; {) P& d4 G" c4 X3 R
//
7 X" [% ^+ M, e7 h// if (! ad->is_running) {
$ {* N* r" N) [" Q/ w8 o// Error_Block eb;
" C+ r0 S: r0 H# q: F3 x// Error_init(&eb);/ ]( p* ]( ], I# I3 t4 L
//% o+ n. e7 N+ g0 K2 u# {
// Clock_Params params;
. @ L8 X& E$ g2 W3 p# L: J// Clock_Params_init(¶ms);# |) o7 a" o2 {. a/ A8 e
// params.period = period;% e3 b4 ~6 J7 h/ }+ \9 R, n, A
// params.arg = (unsigned int)ad;3 _4 P9 u) T! P2 T
// params.startFlag = TRUE;
- X: _6 _' p7 R! _// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);7 L. _; \) H9 n0 }- ~6 Y
// if (ad->clock == NULL)6 c5 A- V Y4 `; A8 l( Q, O- T& g5 M* C
// LOG_FATAL("failed to create clock");
* p: t% `+ d8 r0 G//# o) `9 Z/ S3 n) `
// Clock_start(ad->clock);
2 W/ N, t" t& }4 x9 u/ Q// }: | K% m* y2 }; r6 x& R* V
// else {: z1 C! D3 y6 r. r
// Clock_stop(ad->clock);0 V- F0 M7 f* X( L. o, p
// Clock_setPeriod(ad->clock, period);
+ E) C7 W% b! z% ~0 W+ R) C// Clock_start(ad->clock);
Q4 K' K" o/ G6 t1 B% L) U+ V// }
4 p7 `& F* }# \ @. X; j; D2 u3 [* g3 @( \
// 创建定时器6 q2 t" P" \; w: @# R* t
Timer_Params timerParams;( u/ l& I2 i, V9 v
Error_Block eb;
! H9 X! a" {" R3 r
! A1 c( q8 _6 r // 初始化错误块1 J& [1 g( @+ O. U: s+ A w
Error_init(&eb);
) k8 e! C+ d9 H) H/ N6 e# Q // 初始化参数
7 j& v- B6 N; r! N Timer_Params_init(&timerParams);7 E6 o0 d" |" C% d7 l& s; f
- _* @/ _# d* t9 Q8 z$ X
// 配置周期
: n' Q" s+ ]2 y( I* N/ e) A timerParams.period = Period;- X, e/ d# G( W; X) Y7 U/ p
timerParams.periodType = Timer_PeriodType_MICROSECS;
- ~* j/ s( S6 b6 w4 m* C
! D! b, Z+ O: U$ ~. P& W // 实例化定时器$ C0 b: H9 x$ r& [. v4 O% f6 I( a, t R
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
6 c: g; ~" Q' D if(Timer2 == NULL)/ ~. f5 R- v, s
{
$ Z$ S# P5 X3 I! M; [ LOG_INFO("Timer2 not start。。。。");* U |& y( p7 \! O+ T
}5 Y" U0 I# R, y9 c, f9 \
+ v, o5 x$ L. V! i( h2 M7 V1 w
Timer_start(Timer2);
# \$ _- P; y; N& D6 g7 f) n8 L m" K: ~, ]% `. U# k8 Y; V
LOG_INFO("Timer2 start。。。。");. K. `; h0 H' r6 a0 \
3 s* `) M, ]4 v2 {3 n ad->is_running = true;
# f4 ?; A0 i+ R3 q6 o. V+ ~9 P}* p! @0 w$ v0 l t2 x: L5 w+ {; G
6 f% t }5 U+ _8 B3 X6 D$ x7 X
|
|