|
|
您好:$ w9 u1 j! S! U4 [8 w) x; `. v8 b
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?2 F: O( b6 {7 u1 e' r( Q( t2 B
0 X* a# z3 s9 w O2 z4 L- b% o, f \1 Z) l
6 G. d1 H6 K& e" X) a1 i) ?9 N' J' g% C) m8 x: I. v! u" s
9 N; J: i; M9 c( Rvoid ad7606_start(ad7606 *ad, unsigned int rate) {
6 K, F/ y' X# C/ l// ASSERT(ad);6 C& T+ C# q' I5 _" T7 x; C
// if (rate > 1000000 / TICK_PERIOD) {8 `$ L: a/ o0 `5 e9 ]5 ~# F
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
$ J1 M3 k6 h, y" `$ Y// rate = 1000000 / TICK_PERIOD;
F: |5 f0 i3 O4 p# D! U: T& M, v// }
1 F* A: I6 W9 y//; w+ i) C* \ ?
//
. _$ G4 i7 B* D @7 @// int period = 1000000 / TICK_PERIOD / rate;5 p, R$ _& A) }8 \# Q
//- p, q2 i- J$ h( w
// if (! ad->is_running) {) B* ~ u+ k9 c5 a: a# t/ t
// Error_Block eb;
& D; R4 e6 {- G// Error_init(&eb);9 b$ S8 f* ~1 u& V; {1 F4 M
//+ d( f8 {' \6 ~( ~* |3 N
// Clock_Params params;
g* W+ M0 R& i// Clock_Params_init(¶ms);
0 @6 Z9 f9 J6 ]// params.period = period;
1 t% H3 Z+ p6 l( G9 y% `9 N5 w6 F// params.arg = (unsigned int)ad; }2 D% o% _/ z- e. i: ]! e& v
// params.startFlag = TRUE;. U' R0 H/ M/ |+ T# \, c/ I
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);8 S9 w5 ^4 }& c4 | g! f1 j l
// if (ad->clock == NULL)
7 ~2 ]- s7 Z* x9 d2 f" H2 x" b2 z, h; e// LOG_FATAL("failed to create clock");6 r1 N4 s& ~) Y2 M
//7 f6 o6 Q- l/ r. P( i. Q* Y4 g
// Clock_start(ad->clock);
: R7 j, e* u) M! g- H d! F// }4 d9 u% q8 E0 y
// else {. X% }( K6 c: w0 K. m N( j
// Clock_stop(ad->clock);; H9 a: k' s: {- G8 z
// Clock_setPeriod(ad->clock, period);/ K& {0 l+ c& n1 o1 ]2 F! u |: T
// Clock_start(ad->clock);' @0 S* H; h5 _* U" ^* Y& v8 M
// }1 C8 `- @! L% b& B4 ^
7 U9 |/ L' Q8 D0 g // 创建定时器
0 W! o# S' J# m6 U( ^4 s# f; c Timer_Params timerParams;- b3 y. d' z7 o- ~
Error_Block eb;
' J. l% C/ c9 u1 f: |
0 o+ G; M4 W: V7 Q // 初始化错误块
3 e9 S, W6 }& ~( y4 h j, s Error_init(&eb);- l+ V( l) P2 b* [
// 初始化参数
! n5 v- v. ]+ u Timer_Params_init(&timerParams);
0 J0 w8 w3 o- i% B" ?7 Z, [8 V( O$ m
$ M0 P& e( ^# [/ J8 N/ P" g& F" o1 A // 配置周期
$ Q+ x* n" Q. @" L timerParams.period = Period;
6 E8 d7 n2 N& Q9 O timerParams.periodType = Timer_PeriodType_MICROSECS;
: \" J" @5 B7 y- `
2 f$ K9 e! ~6 k // 实例化定时器6 c: d, C) f& g# w
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
! d" O: T/ c! D% h if(Timer2 == NULL)
6 h4 N/ D# I1 s( F {1 P; f$ J5 f% g) y% i# C
LOG_INFO("Timer2 not start。。。。");
/ `$ c. V9 A0 C% e9 b" r }# l% H4 o+ ?7 b4 M: v' W& d: L
% u3 w- [8 w8 f& ?" r! z6 {# h
Timer_start(Timer2);; I; A4 z& {" Z- n
5 @8 w) [$ ~ z* R9 r0 v: R r
LOG_INFO("Timer2 start。。。。");$ [, u7 E1 |7 Y( Z4 O
& f' D& l2 h4 {3 v# X ad->is_running = true;, f& {. v; q* Y4 Z" I; {# x
}
) n5 u: h5 | H! N( Q; _5 \" r1 d A8 U$ c# N
|
|