|
您好:
5 R( Z/ b9 K% I$ C omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
) u, H9 I! [& `, ~3 o: j
9 @/ C7 c6 A, b: G7 A. c0 S7 R" b! b1 Y' i
3 F* b' r" c5 Z2 ?, G5 ]4 }
! E# M3 M% g% ]. @1 v6 p. E' q$ m( Y
8 J/ }/ x+ v5 S) e& U% l, \void ad7606_start(ad7606 *ad, unsigned int rate) {) a9 u" J4 ~* ^1 R& s) C& W8 K4 _
// ASSERT(ad);: {( T7 b: r" m$ n! H8 I; _& Q, X
// if (rate > 1000000 / TICK_PERIOD) {
) N' L7 @7 p8 f// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);; [7 f0 A! V6 m, B0 U
// rate = 1000000 / TICK_PERIOD;: q/ d) P& @, A: q* A- e9 i( X
// }
0 x" q9 u# p) r1 x8 I/ C//
# Z9 C& J" K* q//0 O0 s! W# j8 h5 W1 o
// int period = 1000000 / TICK_PERIOD / rate;
5 d. f* R1 e1 _4 H//+ [% ]: x7 T$ X9 _2 B
// if (! ad->is_running) {
: [2 z# {! f& v// Error_Block eb;6 u, d) l1 t( f3 S
// Error_init(&eb);' w; b, P: W$ h* g
//4 \6 j) ]$ r9 S) O4 P! t
// Clock_Params params;' h* u2 o* ?, q# _/ G/ ~% |4 G+ Z& Q
// Clock_Params_init(¶ms);
; {4 Z% j2 _. O( K% r// params.period = period; ]4 A' I7 x1 U B* f: r
// params.arg = (unsigned int)ad;7 u# J0 Q9 F+ Q' U
// params.startFlag = TRUE;. j% {& N1 T3 p- m2 h
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);( c$ B2 O2 z- k; I
// if (ad->clock == NULL)& X7 K! }1 T$ h
// LOG_FATAL("failed to create clock");8 n+ O4 ^7 x# [% s1 @2 f
//
* O% Y; O" K8 h' n// Clock_start(ad->clock);
! ]5 D( Z# e3 k$ X" Z// }
, B$ n' r4 O7 J+ ^8 i; z// else {6 I8 f1 t; O4 n5 e) b
// Clock_stop(ad->clock);& F8 X1 W6 B. K" X( s0 W& l
// Clock_setPeriod(ad->clock, period);! A' P+ }9 C: z
// Clock_start(ad->clock);2 Z+ g) s# E3 J! P
// } {9 c! D4 k& [! g9 e
5 e3 W. N9 D! Q; H9 y4 R0 c9 X
// 创建定时器" X' i0 ^# Z. n0 H
Timer_Params timerParams;" Q& T, m( h5 v9 p! J# m) T
Error_Block eb;
: z# J% ]9 p5 r+ G4 m1 J7 i* `5 x+ a: r
// 初始化错误块
! e! l$ ]8 x; ^8 }+ g) v+ W# I Error_init(&eb);! l# B. c0 }1 ~% N; Q- _6 t% g: D
// 初始化参数5 b3 o; P1 j& Q9 M; d! J
Timer_Params_init(&timerParams);
) F3 [, U9 O/ d- C
p k M, d# O, d/ c, ] // 配置周期1 _* u% g3 x% H, B
timerParams.period = Period;( j' g% y; _( N( E" q* ^; g
timerParams.periodType = Timer_PeriodType_MICROSECS;
+ w- a+ ]( a$ J! D W; w( U2 R8 A4 R$ |; v: }# f. ?
// 实例化定时器 a* K2 ^1 o2 K) f: i3 c0 M
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);; {: M x5 S! W" c7 z
if(Timer2 == NULL)$ {- C6 r& L$ P% N2 V5 A
{
2 t& E, _1 Y3 S! I! w LOG_INFO("Timer2 not start。。。。");
0 k9 X) k9 b( J }& H# y$ P- r' O8 ?! f7 l7 }% n
9 j# `) ?( M( N4 a$ h9 o% L
Timer_start(Timer2);
' N- U3 j5 F, ]( S
+ B5 _9 ~4 P- _9 [; a$ D LOG_INFO("Timer2 start。。。。");6 Z- f X% a1 }$ [% C5 l, h
+ f! b" N4 u5 h2 T# n# O' _ ad->is_running = true;
4 N0 Z- b, u0 W2 S. V M6 ^, e}" K2 y+ c) W+ U0 O
7 B* j- e. N0 L+ j& j3 ~ |
|