|
您好:
9 n" E; B2 @! D omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?" ]4 n5 i: p9 Y. d( ?$ I& x8 K( c
. R7 {6 q( q/ g+ y5 _9 ~0 `8 N; z; F: I% B& |- M2 m2 P6 k
. V* ]0 ?, [) L; X) d8 Q2 E6 k
* C( T E; B* M% T; x$ C5 Z" e. y; f! K0 t4 Q; u- t+ ^7 q
void ad7606_start(ad7606 *ad, unsigned int rate) {
4 t0 ~' X5 B! Q# i3 l6 }1 ]: {5 C// ASSERT(ad);
6 u( Z# P5 R4 F' k// if (rate > 1000000 / TICK_PERIOD) { [ h) r r. \- Z. T
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: c2 }5 p1 ^7 L// rate = 1000000 / TICK_PERIOD;3 i7 V" v. ]* [2 T. A
// }
! M9 w7 Z6 |6 R//
3 m; {+ }6 x! J, y+ B& [2 S* ^& y//; ]* ~/ e8 ?+ Y% ^
// int period = 1000000 / TICK_PERIOD / rate;5 D! [, r) i. v3 B, `! I
//9 V9 v1 p( E0 @: t' p$ g% i: E
// if (! ad->is_running) {% J! K/ F$ x$ p, j1 F S
// Error_Block eb;# ^" t; u ?, w, n* L* w
// Error_init(&eb);- J: M/ d: n$ ^: I5 b5 y
//, V, Z4 ^$ \8 [' {- W- N
// Clock_Params params;; i' j, N+ ?1 m3 e7 z O
// Clock_Params_init(¶ms);& u3 j' c2 }8 H4 i
// params.period = period;
, u2 v6 U) J" G+ x/ t// params.arg = (unsigned int)ad;1 h9 y+ i7 I. ^# R" l$ D
// params.startFlag = TRUE; X: C3 q0 s4 k/ w9 y3 z
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
; v7 i( E: s8 }8 J// if (ad->clock == NULL)# i% M* ]( s9 G! \; R
// LOG_FATAL("failed to create clock");
G, D' f, e5 T/ s//* O8 L3 c# X5 s! \7 z7 B
// Clock_start(ad->clock);7 M, S( w- p( S7 _" f5 I* h
// }# b, T/ o/ V- V1 _& J t9 [
// else {
& ^4 u$ e2 D: T0 x6 j4 u; H$ e// Clock_stop(ad->clock);
" o; A, F+ H) t// Clock_setPeriod(ad->clock, period);
5 A7 w# s6 Q% j k9 E7 J4 b// Clock_start(ad->clock);' Q6 d0 \6 d( B/ @0 q
// }. y% |( h. f1 z+ c2 j, F
3 w; _$ E6 y4 t // 创建定时器! h7 T& {* w8 U6 S% x
Timer_Params timerParams;
1 }/ J2 Z1 n6 t Error_Block eb;
1 M" q! d4 \' J j$ K0 P
' G0 `' o; o. F2 a3 @0 @& k! \- { // 初始化错误块
0 `: C9 A2 k; r3 u' t Error_init(&eb);
5 Q6 P$ h" t; ]' n' E0 W // 初始化参数
0 D6 [9 V" r9 t2 u Timer_Params_init(&timerParams);
1 |0 _, R4 A7 s5 H3 s% B: q+ k o) e
// 配置周期
: F- d0 @( l1 h$ S* X timerParams.period = Period;% g G2 a/ K g" G
timerParams.periodType = Timer_PeriodType_MICROSECS;
: {8 `+ {* Y: e1 `1 \: e, v2 i$ i2 Y' k- Y
// 实例化定时器
7 s9 D# X) k$ E5 F* _9 P5 m Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);5 h7 B: a4 M% G) Q' H& a( l
if(Timer2 == NULL)( a" o ]* P5 S1 Z
{6 \, ~, P8 v7 `1 Y
LOG_INFO("Timer2 not start。。。。");. j5 c' ?" Z0 P! e8 _# O7 @4 O! x
}
5 x Y2 d, `* s; g* b7 I2 V/ {. ?8 T
Timer_start(Timer2);
" ] r# K: e+ E4 p7 w1 h J0 q: V' @6 o. c2 { O
LOG_INFO("Timer2 start。。。。");
4 x: [9 |0 F" Q. r$ d u8 _
. W3 N* x0 S( M w# P5 s9 [. a% m. w& e ad->is_running = true;* O+ X. |4 q' S% U4 _0 A
}
% v' `/ T3 i) \7 Y' Y) Y& A; {0 C: i2 U; d. E C
|
|