|
|
您好:
: I1 F! B' v2 D3 O) W& N omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?) h: H) j3 a0 B2 {# W& C2 U
4 V8 [+ O5 T; P+ |1 O% B* C9 A
/ G/ ~' ^7 Z+ m O/ i/ v8 V; N; o' E0 T+ @, S
5 ^ \; u3 x8 m7 ~+ ]% m8 q
* Z. I" [2 _, V" M8 n( z1 \& Ovoid ad7606_start(ad7606 *ad, unsigned int rate) {
$ q% F- E: Y# E" @// ASSERT(ad);; x5 A3 x3 ]( K" I; Q
// if (rate > 1000000 / TICK_PERIOD) {, G- c/ ]2 Y- T" F
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
# V! g. H! H0 ^0 R# L" K" m// rate = 1000000 / TICK_PERIOD;
) U9 G0 V; F2 @$ e* O1 L1 Z// }; X- R$ U: ?7 Y# O
//
& o' g6 ~- b" B8 I; ~ n( f. D* Q3 P2 ^//; e1 ?$ i. }- e2 X' m: k& [- a
// int period = 1000000 / TICK_PERIOD / rate;
$ t1 E( A) W0 l//7 q! \; A; u! D( i
// if (! ad->is_running) {2 a+ ]# K' ^; X
// Error_Block eb;6 @ F$ u/ _" y
// Error_init(&eb);$ f: E h: B9 u* f9 ~; G
//( V0 t. B5 K; b' O. H, h
// Clock_Params params;
$ p9 F1 X! L) V6 u( F( v; Y// Clock_Params_init(¶ms);
' B, m. h* h, m2 `- Y* @// params.period = period;6 R1 s$ u; t& A* Y1 v
// params.arg = (unsigned int)ad;8 F3 i& P: C$ l3 z! _3 v
// params.startFlag = TRUE;
. K& c$ o% h- |// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
6 P( E" H4 U) t( ?' G// if (ad->clock == NULL)
: K, C# ?1 z, r9 O, A7 L) Z# i: e// LOG_FATAL("failed to create clock");
- u X( i/ F( @: Z. j//
" z6 K/ ?' f7 o$ a// Clock_start(ad->clock);
) _- h4 s4 o. j$ e2 K" r// }+ _" t, h, `6 u8 B' E3 R& v
// else {3 {: F: L3 Q$ V( H4 y: z: q
// Clock_stop(ad->clock);
, H0 e7 |9 N: P// Clock_setPeriod(ad->clock, period);
D; s. w- h9 w8 P// Clock_start(ad->clock);
: t1 z' h) d; D4 p2 a: w. ~9 d: q/ u// }/ a5 h7 W# O U/ \4 W- }
) q, i8 ]" n+ B
// 创建定时器
( G# l* H! a7 r0 T Timer_Params timerParams;' S z% s3 I" H) _
Error_Block eb;
( f1 ?8 B- M8 t" P( X- b* O: }8 q: ~, q+ B0 h; j5 `
// 初始化错误块
( i1 l0 @1 t- A; [2 d4 j- e: N4 Q Error_init(&eb);4 S+ Z) e: _' y" M7 Y
// 初始化参数. w( I1 T2 t7 J% K w4 V \1 Z
Timer_Params_init(&timerParams);, g1 k( F! w/ J* ~( f0 o
|0 [7 n. _* ~ // 配置周期
5 p+ q& d, c* i timerParams.period = Period;
# b: q& F/ W3 ?$ F% A1 @4 W timerParams.periodType = Timer_PeriodType_MICROSECS;
3 t; v; {9 ~* H& v6 \& |. C% w8 N7 L" d. {& k
// 实例化定时器
2 K) k- s5 M0 f; m5 q/ F! l+ _ Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);$ ?/ {1 e* ?9 F+ j0 P' A0 c
if(Timer2 == NULL)
9 Z: J5 r6 E" A/ Z {/ g9 {" m% j/ y
LOG_INFO("Timer2 not start。。。。");
. g' n, y; A+ y/ N }
+ D$ x: p o0 G2 {
. s3 s9 O2 R9 t8 \: R0 V9 W; F Timer_start(Timer2);
) v1 M9 W' ]$ E ]
8 O% J# ` y( k6 A7 ~3 o+ F& n# k LOG_INFO("Timer2 start。。。。");
6 X- f- _& C8 [8 F2 E- v% e5 B( h! [( k. B$ z b( |* C
ad->is_running = true;; h' V- x8 ^: g& L( Y1 ?
}$ Z3 d9 y/ z( `
c H% o2 N0 x, U- u: j W |
|