|
|
您好:
' O- ^5 P9 v8 L/ b2 {$ Z& t omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?# X, j y% Y! f4 Y
2 J9 a( o3 D' m3 ^
A2 b0 `; ]. x
; F3 F1 |& m" D+ ^
& u8 L5 J9 I2 _9 t& f9 G D, y8 L( Q
void ad7606_start(ad7606 *ad, unsigned int rate) {
9 x p- C5 ?9 V/ K ?% i; x) V6 z% [$ X// ASSERT(ad);4 U3 f' |3 B" i" g; u% ^1 D
// if (rate > 1000000 / TICK_PERIOD) {+ k7 G. ?' O4 i- L& J! l4 x
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
9 k9 q$ ?$ ^3 T/ O9 ^// rate = 1000000 / TICK_PERIOD;/ F' f' D' O- V$ @. [
// }
: k; N% P+ ^$ i1 B M//! o5 S3 D/ t; i. ?/ M, H
//
% M$ q, \& K P/ W; h$ P# J// int period = 1000000 / TICK_PERIOD / rate;" G# G5 \: ?& k9 D8 p. o) ^
//
8 o: @: P1 f, _* y$ L// if (! ad->is_running) {" {1 o$ @6 a6 H0 N
// Error_Block eb;
/ b8 I0 v4 w0 f// Error_init(&eb);
: p/ [( Q& l1 e/ f7 |) g. K//* k0 ?/ g% x4 G7 P
// Clock_Params params;
5 f1 d& L* B4 N {' k! Y// Clock_Params_init(¶ms);: E0 e" i+ u4 d. A' r. o
// params.period = period;6 }( S- ?5 C0 s1 o1 ?3 o: v
// params.arg = (unsigned int)ad;
Z/ l% C3 ~) `9 @// params.startFlag = TRUE;
' G3 ], ^6 j( v// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
5 K9 r6 N# h( ]4 a// if (ad->clock == NULL)! P8 l; b+ g9 P' H7 L, o0 r
// LOG_FATAL("failed to create clock"); `% [" `8 ?* T5 B' m. `# b. ~, e2 O
//2 o0 o$ R/ q, Q( I1 C5 d
// Clock_start(ad->clock);) x2 n, B j$ K2 {# d; c" y8 n
// }
* m, O( X! s. \% O8 d' N8 r$ a' p// else {9 m ^2 W+ P2 j# q: f4 c5 Z3 F
// Clock_stop(ad->clock);
% v' L8 H }/ k8 W* v* C' R- G, H// Clock_setPeriod(ad->clock, period);
9 l, ^# |, q1 w& T* K// Clock_start(ad->clock);. x& E- d6 c ?
// }. C9 y6 W9 j+ s1 b; \
, S4 I v; y; d6 n
// 创建定时器
' p, d) g6 N" h5 D5 j Timer_Params timerParams;! P( F( T- j6 Y' S7 K( |
Error_Block eb;
4 F D. u" q; w2 r) E3 g4 b( M; _" C
// 初始化错误块' u/ W6 h: s8 L" l, O
Error_init(&eb);! H+ B) j8 J$ N; \8 p
// 初始化参数
* S) o1 {* K, Y, ^; X9 M! k H Timer_Params_init(&timerParams);
/ U" f" x2 y* C) D& z/ f! l4 |+ O: }. I4 B9 T* s/ s
// 配置周期
8 I* |+ f2 z9 M3 e" ] timerParams.period = Period;
: x+ D7 \( j. n) w, c/ h$ g timerParams.periodType = Timer_PeriodType_MICROSECS;
4 n; D6 [* g7 V1 M! E- ^# J
! W* {- H" J8 ?5 E3 D+ ?9 k // 实例化定时器9 j! T4 [* Z! n
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);4 o: a/ _( b8 U) w$ `/ e9 Q5 X
if(Timer2 == NULL)
( R4 U" p% R7 c {
5 ~/ r3 i& A. s* o9 f7 p3 q1 r LOG_INFO("Timer2 not start。。。。");
: T' ]5 V" ~+ }* N* H" p! j# c: y }# e' _" k7 _/ [) ?) v$ H' c
3 e9 {+ B# D2 f$ h+ P
Timer_start(Timer2);
( `- y) G( R5 i$ c) K& w# D- C; L* I4 N& r3 w) ]( X0 L
LOG_INFO("Timer2 start。。。。");
% }+ m) s$ y0 Z- @2 Y1 c7 x9 ~+ a/ ]. i* X
ad->is_running = true;
/ j7 @: e6 @! f/ ~+ H; c3 V5 x}5 t2 R- {& J; u) R I1 v
) R0 p8 S3 U0 e, k |
|