|
您好:7 j2 `! G$ |- x; q/ X" `& c, \9 _, Y4 O
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
* u% \9 `0 Y, v
. d/ T8 }5 G, Z& v4 g, y! p8 g! X3 M8 N1 o5 ~8 L
% ]3 }4 M, R0 e9 o" _* j; |2 N2 a' }( p+ ]
. R7 j4 q6 F+ F3 u3 Nvoid ad7606_start(ad7606 *ad, unsigned int rate) { A0 y1 q0 z. ]4 {8 o4 h
// ASSERT(ad);- q. K8 h- ^( A' X1 D+ S4 }# o
// if (rate > 1000000 / TICK_PERIOD) {
E! V; X- X0 z) K# B9 x: L+ |// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);( P/ t% L6 e/ R- H0 S, F
// rate = 1000000 / TICK_PERIOD;
6 H3 J3 |) R$ K; x% D4 S* E! N// }( y, A- @* h5 o+ @
//) R, [% N2 c* `5 {: m
//1 @6 U6 h5 G6 j K, ~/ j1 ?
// int period = 1000000 / TICK_PERIOD / rate;7 z; a+ r( W; ^7 B" q
//3 j: [" F& H1 v- S
// if (! ad->is_running) {
6 ^7 K0 O. j E/ @2 |- }0 }// Error_Block eb;- J' d0 ~+ p* k" Q7 @
// Error_init(&eb);
7 Q# V; L$ | z* H' i6 S//
8 r$ l/ W- {7 b2 J# P5 ?# @// Clock_Params params;1 ? j3 C% V2 @0 c, Z9 Z# j
// Clock_Params_init(¶ms);
9 ^* s' n2 u+ t' z// params.period = period;
+ a. u+ x4 I0 p0 ~. M// params.arg = (unsigned int)ad;
! |3 Z* ?& K3 K J" Z# M* z0 P. {// params.startFlag = TRUE;( Y6 T! \0 o/ V
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
8 ]. ]* w8 ~: O: a# p$ j// if (ad->clock == NULL): D# q- Q# n/ W5 v# j* W
// LOG_FATAL("failed to create clock");! K- N w6 ^3 u; ^
//: X3 y" r' U4 q3 B. t
// Clock_start(ad->clock); ~' T' s6 s' |& X$ d9 M/ H' q
// }
: `3 p9 k. L# Y7 I! {// else {
8 a0 I. G; N% H& a1 W// Clock_stop(ad->clock);% Y- v& C+ C# j5 ?0 y
// Clock_setPeriod(ad->clock, period);
I( p5 A( Y- j) t e$ J( K// Clock_start(ad->clock);
6 h1 O7 A6 {- x B" @/ q// }9 L& e. b' h4 s# \6 v x9 X
% q! }+ z) ]! p // 创建定时器& E/ b# \$ H& ?9 _
Timer_Params timerParams;6 w+ c* B; ~" ?; F o I
Error_Block eb;
+ O. M& u/ r; `
" u0 {, ]$ h1 B8 Y3 }2 n3 ` // 初始化错误块6 k; p4 h- y. }. p! H. V; ^+ ^
Error_init(&eb);
. M8 m3 v5 v. s" F# n# T i6 { // 初始化参数" V, P- Y0 E1 X" f. v# i7 t1 ~
Timer_Params_init(&timerParams);
. Q0 R6 _1 g! L7 I) R
6 g' Q1 @; \) b2 k5 ?* I1 e% l // 配置周期( e2 L8 e1 C& g$ Y1 S
timerParams.period = Period;; s1 b3 U. f$ e; V" J
timerParams.periodType = Timer_PeriodType_MICROSECS;
7 X9 J) q' M- d) A7 _) p" y) p
$ m0 n d2 l8 |+ K3 L/ T // 实例化定时器* T% b0 d0 w* ]/ v! u% J4 ^1 ^, {
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);/ @* z1 o- a7 Y" H8 i3 H$ J
if(Timer2 == NULL)
7 D& K# x# ]% d, H7 O% x3 p" [- _: Q {
( C: q# [; t) n+ S, v1 B LOG_INFO("Timer2 not start。。。。");
! W6 _$ H5 I5 v5 _3 {3 l. k7 S }1 Y6 U" U- f5 T5 m% P- D$ I3 g8 i
' s) C# o! }& a0 C# A! ]1 a
Timer_start(Timer2);. B2 R3 ?5 |# d0 V1 L% M/ L
% F5 e+ V |) p- _! s7 { LOG_INFO("Timer2 start。。。。");
1 D; [4 @& V2 u! X5 R* E0 }: Y9 P, Q2 D) C
ad->is_running = true;& f1 o1 T E& Z1 }
}
% r; E; K5 B7 m% m& P7 ~ z
0 h) V0 S2 ?8 E8 }$ s9 \! W1 b |
|