|
|
您好:
& k( D1 y2 C# |! g$ |) N omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?1 Y0 ` Y6 Z3 }5 z! c+ G0 y; E3 u
) y, R; q% Q; g3 v( K& |
. i$ W7 y3 I# E7 N0 _! I
+ g$ j, ^1 }$ n( }8 u. u# m" ^6 D% F$ k' T. y0 Z2 F4 ?. i% f/ f* Y6 j
$ L1 k' b/ g, k; Z8 P# Q7 Ivoid ad7606_start(ad7606 *ad, unsigned int rate) {
4 v5 j: e7 i- n8 p3 |// ASSERT(ad);! Y# e$ ]0 K. _+ u% H, A! b( ?
// if (rate > 1000000 / TICK_PERIOD) {
4 n& ^! ?7 C2 P; ]9 |! c5 Z( h// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) I5 j ~1 v/ Z, c' k5 L9 u// rate = 1000000 / TICK_PERIOD;
4 i# Y) Y9 o5 L$ j// }
3 W: G, ~+ }. F ~; ~0 F3 E//
8 P9 }& q1 ?" o/ y0 V//8 H5 P3 x6 R; V1 _6 x
// int period = 1000000 / TICK_PERIOD / rate;
7 G1 E9 ~% x8 P# E$ b* y//
, G; r* A" n% J" J& d9 j# X// if (! ad->is_running) {
# K5 |* m) c. g1 s// Error_Block eb;
3 A' o _7 j L" b. d// Error_init(&eb);# \1 J2 C* q/ E/ {
//
, a- g4 l1 Y3 U( i9 |0 ~2 o. ]// Clock_Params params;
& D- P' T6 g/ H! c/ O; @// Clock_Params_init(¶ms);
7 O/ i) D% s% o/ s* N$ b; s// params.period = period;
/ {' ]* c6 {& _6 I// params.arg = (unsigned int)ad;- L, h% S) ? C m
// params.startFlag = TRUE;+ ]( } w( @+ o7 `1 i
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);" d0 q: _6 ?! B5 E) B2 R
// if (ad->clock == NULL)( n" F8 m1 {6 L' a' B3 ?" g
// LOG_FATAL("failed to create clock");
' W/ J( L* C' d//
& f+ \3 d& S$ Q// Clock_start(ad->clock);
! S1 B0 M k) ~; G/ S5 E9 C// }9 T K# c: H% n
// else {( G% Z1 `! F$ A$ F+ j3 j( D
// Clock_stop(ad->clock);! P# a. U' R7 o+ Y
// Clock_setPeriod(ad->clock, period);9 I: j5 k/ y/ q+ [: x3 n; b! B
// Clock_start(ad->clock);" [! T- Y6 {; m! D
// }% e, L9 ^& `) j( g& f" b* \6 W
' e8 ^8 ` a2 V$ ]& n // 创建定时器
% T5 }& ]% d1 r3 g; p& y. M Timer_Params timerParams;
0 e! v. k' f5 |7 `; f Error_Block eb;
6 r; U6 C9 Q/ B k; ]2 `: `# {3 x2 h; ~' Q. A4 h, Z) f
// 初始化错误块
3 X. y6 I" t/ ?& E Error_init(&eb);+ W% T6 ]& R9 I9 E! E2 f' O0 z
// 初始化参数
( g9 c' u T, e+ j0 i- K' n Timer_Params_init(&timerParams);- W1 b9 q2 F: o! H! ~7 m; N
8 \$ w0 s& ], B; ?9 [0 U8 ?6 A7 e' c7 U // 配置周期7 {$ q1 |1 Y& v, G m1 s8 r
timerParams.period = Period;& A( r8 _" R1 g
timerParams.periodType = Timer_PeriodType_MICROSECS;
+ W( ^" W* B9 E8 s7 C+ i5 o }
& z x9 y; m$ o- I // 实例化定时器
$ X0 e) r5 X4 c, C: \) e# G* a' H' R Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);4 A/ Y: r9 t1 p; v0 I Y: j `
if(Timer2 == NULL)
/ \) d" E @6 r2 [ {9 M' w8 H1 @, y# @& {
LOG_INFO("Timer2 not start。。。。");- Z9 E9 v# y7 t5 t* n3 R0 j5 c
}8 Y- E; d' z' y8 ^" X
v0 S* D* e+ q$ x" p Z! U
Timer_start(Timer2);2 B, g# C7 ~- g& \$ J# F
0 R l9 Q6 w- F) S; C LOG_INFO("Timer2 start。。。。");
% z6 ~0 D% a; `7 \; g( W
7 A2 V& [+ D4 n8 L4 p9 l5 { ad->is_running = true;. o- W ?; f8 y6 l+ B7 v! c
}6 q) c( X4 r L. s7 Q; l2 _
0 y3 N& i& `0 o6 [- d
|
|