|
您好:/ `0 O4 @+ [* V8 X9 l, y* D8 H
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
& y4 b) l) x' V) T: n
$ e' W( ~) ~9 P* c2 n
0 j# D& R& m; _# Q4 z+ o$ q+ n. E0 b9 W6 a) K: `
1 m" D* ~" T* I8 n j$ y$ Y
( o# r2 o" e: } d' cvoid ad7606_start(ad7606 *ad, unsigned int rate) {
- t6 @6 o0 S) J n1 z// ASSERT(ad);
) f* ?/ x* g9 f1 @& n2 I: l// if (rate > 1000000 / TICK_PERIOD) {
7 ]) S4 d* Y5 t! T8 M// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);4 f! Y" u$ C: M" `+ n+ |0 z
// rate = 1000000 / TICK_PERIOD;
+ M1 Z0 i- ~. J/ z8 w4 S- Y/ t( @// }/ b6 q- c3 {0 G
//
" P7 }* i0 b2 U; g o3 X& E//- s$ B# F( y1 Y2 r0 {+ C+ \" v
// int period = 1000000 / TICK_PERIOD / rate;+ b- ?& O; H9 P' o% s
//% D# K9 v% s3 }6 ?6 x* W6 R9 ^
// if (! ad->is_running) {
4 l+ _- }3 m1 a4 d: u// Error_Block eb;
# X0 C3 w0 G h, J// Error_init(&eb);! ~# {5 E0 F6 P6 p! z8 A1 s% k
//# v: B* Q+ h' v% I1 z1 m
// Clock_Params params;
0 z- |) O" ?" c/ n% r: o6 t// Clock_Params_init(¶ms);( u5 J1 ?9 x* X& B# v/ h4 V
// params.period = period;
: I0 v7 N# Q& i/ S) R// params.arg = (unsigned int)ad;
7 W8 h+ o1 l5 G \// params.startFlag = TRUE;
6 _" Q3 M6 y6 v// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);# s3 Y' M& j6 d3 e& R4 o- v) {) }
// if (ad->clock == NULL)
- M' I+ [! X: P$ Z# W# ?6 J// LOG_FATAL("failed to create clock");$ F3 z% ~( ^: J' C; @: G- s- i- g
//
. r" I9 S4 K3 m- c# ]% u// Clock_start(ad->clock);
9 @! V8 `1 Q$ f// }% o8 T3 M9 s& u( x" {( v
// else {
0 ~% P: C' N0 G9 Y: b. W// Clock_stop(ad->clock);
1 _& v. |( W2 D2 @) _- @// Clock_setPeriod(ad->clock, period);. |+ P/ j% U _( X4 c# J* O7 A
// Clock_start(ad->clock);& n, |+ A! r; m2 U0 u, f6 X; P
// }" ]: ?; i% Q! m9 Q8 y- j
# B3 b- a5 e7 C, Q // 创建定时器
+ T B5 g, J- p6 N% P2 z+ E v Timer_Params timerParams;1 O( q! a% h( |8 g4 M
Error_Block eb;
4 x# G: J2 j: c6 ^# f# I! t7 ~# k. ~7 B, K/ H$ z
// 初始化错误块
" W( o3 y1 Q9 @+ K2 t Error_init(&eb);+ ?9 I+ r0 ^1 G# u* F2 [* C
// 初始化参数3 x9 r6 H- c& s9 R
Timer_Params_init(&timerParams);/ L; Z' O: s0 @, V+ W- n4 P2 D
4 }1 d1 P% G& }7 u) E) y
// 配置周期( y6 [/ E8 K- U/ C _
timerParams.period = Period;
* _; g0 Z. a+ A | timerParams.periodType = Timer_PeriodType_MICROSECS;$ F$ G7 g* G& J5 t2 n8 z
! {; _! _- H( r // 实例化定时器
2 K7 n) D5 Q0 _# y' o+ N' K$ r Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);/ w$ Y( n; p& U# s$ U
if(Timer2 == NULL)* g! J: e& U4 b) Y, }! B
{. t9 d6 C. q5 k$ {
LOG_INFO("Timer2 not start。。。。");) w: P( T; D; p
}
7 z5 E4 w3 B8 U2 U& i. N5 d+ w$ l. d1 F1 f( b
Timer_start(Timer2);
3 z. G0 [/ P- L. M6 t( l7 i6 \# n4 [
LOG_INFO("Timer2 start。。。。");
; D' w" ?+ c. O7 a4 A8 ?; M' ? L( i
( S7 F' K- l( A- Q, T/ S ad->is_running = true;' j% A5 K3 G4 A4 ?1 j3 z
}
+ K) ^* a7 d3 n |+ u3 x
$ {/ I& Y" Y- p8 ]3 p9 [ |
|