|
您好:
* b& r: w7 m3 {8 F. ^0 _ omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?, T0 j+ ]+ D5 J0 e a6 z
$ @' U/ p3 S2 ?! o
- T% n8 k% |- e0 `, y+ ~& a2 l7 a. J+ { X5 U
5 I' O+ {# G7 w( C" r* N8 ~4 A8 Y7 y" w
void ad7606_start(ad7606 *ad, unsigned int rate) {) T$ t1 B! q" u1 S: H) C
// ASSERT(ad);
* J& P4 ?* V3 p* R% x2 G1 R// if (rate > 1000000 / TICK_PERIOD) {; @' j$ v. K& C' N+ }0 X
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);. f! w% ` l$ u( x
// rate = 1000000 / TICK_PERIOD;' N W! e% Q! X1 R: F4 j
// }
" r. }* _) P ]2 `3 u: c1 g//
$ d% ?+ w" v# e/ u* Y0 z//" p* \6 \- w! Z1 A4 d
// int period = 1000000 / TICK_PERIOD / rate;
" S* ?' r, `- v: Z3 \* B//
8 v% k0 ?: x2 J8 d: H& Q+ N! F// if (! ad->is_running) {1 U0 n# j, J, M9 E
// Error_Block eb;0 R; u h' h5 _3 o
// Error_init(&eb);
& y- X, s& l6 t7 l//
. a% ~4 E5 ?: M; S// Clock_Params params; q) d A2 c. W& T9 L! y- D
// Clock_Params_init(¶ms);1 Z, w9 @5 b: F" z; I: W5 ?
// params.period = period;
. ]) C% r' o5 H, ?0 {// params.arg = (unsigned int)ad;" j+ \( q: |0 l4 |# [+ p( m
// params.startFlag = TRUE;, a( L$ N2 [+ V- V
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
8 ^; S7 Y3 F& o7 I. H2 D// if (ad->clock == NULL)
1 Y# \2 R0 P( D W9 S7 {7 o1 d// LOG_FATAL("failed to create clock");
3 P5 S6 p( H- ?0 n2 o//# {4 ^ r7 C9 W& j
// Clock_start(ad->clock);# R% z6 D; o8 [6 a* g2 S: o H" F
// }
7 P7 A. m7 s5 Y# ]( t4 q4 J* z// else {
9 S$ m R# Q9 o5 S4 e& ]) F// Clock_stop(ad->clock);
$ C' P R0 ^; f5 N# n( Y// Clock_setPeriod(ad->clock, period);
2 d) p; m" M( ^// Clock_start(ad->clock);
3 S: V' k z. f2 f0 r0 k6 q- J# X// }7 d/ z8 e, ^7 ?
. Q8 m/ p- g) a6 R" Y+ j
// 创建定时器1 c5 B# s' L, C: K) W
Timer_Params timerParams;
/ j& o, L/ P, p5 }# i$ E% B Error_Block eb;
" U+ V( {; Z9 C$ [; o% ~( c# c) K0 t, G+ P. P- B
// 初始化错误块
; `6 h' U l2 g V Error_init(&eb);2 A( i c: F6 X, B7 |4 i
// 初始化参数
+ O4 `: v$ U! M; N9 O; z- F Timer_Params_init(&timerParams); ^9 S) ^8 E* |$ a( D3 U
" e+ h* M3 y/ p P# g% ~ // 配置周期
; J. l; M) m+ G1 B5 W. ~, D; Z* m timerParams.period = Period;
1 [8 M/ C& i, ]( K _$ [. \ timerParams.periodType = Timer_PeriodType_MICROSECS;; e0 o8 N1 _! }0 x6 x: |
+ C! Z1 `9 k7 X3 x+ x // 实例化定时器6 Y$ Q( g$ \* x/ s0 i; Q) s
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);' a( N! J" { ?' A5 f( a
if(Timer2 == NULL)& z0 N2 {( i# d* _) k
{% \9 a2 Y, N: L. m8 M3 Y6 I
LOG_INFO("Timer2 not start。。。。");( Q7 Q& [" J1 g& V
}& }9 O- S4 [: m! [8 `: J; `
4 y# E" \0 X4 v4 q Timer_start(Timer2);
! \- _, a/ b: [8 F1 b7 N9 ?7 M$ ~ p5 x
LOG_INFO("Timer2 start。。。。");
' u# i1 }& a( G8 Z$ R1 H7 f) A& g) R3 T3 |5 r7 ^( {- n5 a
ad->is_running = true;
h5 \( D8 R1 r5 {" \8 }}8 S2 t, S9 S: B
`, [$ l, S- L( p9 M |
|