|
您好:2 t0 k5 q& o" b% s/ `
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
5 R4 g x. }4 `6 Z
1 z- _1 q7 }4 i! Z5 R% ]5 b5 @, K
2 c! a H' r$ V2 x* L
. Y2 U6 ^: B' j s0 l% y; {6 i% Z* [, X7 V% u3 r
& X9 u/ S6 }0 L1 [' @- h. ? }
void ad7606_start(ad7606 *ad, unsigned int rate) {
; R' q1 B- C. T/ C// ASSERT(ad);
% `( x7 W8 p: v1 R% ^' `* ]// if (rate > 1000000 / TICK_PERIOD) {6 a+ z- j# `: B, ~+ U2 u) h2 r! |; k
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: m3 v/ B0 D, T3 P3 O& H$ x// rate = 1000000 / TICK_PERIOD;
, t- V% \1 Y5 L* @, [& N9 X// }; Z0 H$ _5 M/ N% }
//! z& J; G0 i* E& w: J" s
/// D! T9 n. F! O/ p6 @
// int period = 1000000 / TICK_PERIOD / rate;
2 `- t5 P* g5 {3 \7 [) ~//
6 Y/ T& n, @0 E% [7 g- J// if (! ad->is_running) {
0 T) ]$ q- N0 O5 n. i1 @9 ~// Error_Block eb;
! G" i* K: I2 c3 h3 v. V// Error_init(&eb);
# a# b4 c% d# n+ C) D//: K0 p$ r# M* `
// Clock_Params params;3 y8 ~7 v) ~/ m3 j
// Clock_Params_init(¶ms);8 f) i5 B* X/ T5 o! h: h* \
// params.period = period;
' h' ^1 J* |0 m2 {5 t$ y9 d% W: d$ Y// params.arg = (unsigned int)ad;; b1 G! I0 w) z3 D- T k
// params.startFlag = TRUE;
+ x) a: [3 [$ o- W6 p5 m// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
9 {/ k# O/ {$ u7 y// if (ad->clock == NULL). S: O9 k0 {1 D" M0 C7 v4 O: f
// LOG_FATAL("failed to create clock");* b0 t& ]8 x+ i
//0 D( C# G4 ~0 O- H8 b
// Clock_start(ad->clock);
$ Q1 r( u0 J% X+ g2 p4 K8 s9 d* M// }
2 r) A/ u& K; t6 M7 U// else {
& D3 j' [/ B/ j# i// Clock_stop(ad->clock);
4 y0 s" b' [6 x g H0 \. y# {// Clock_setPeriod(ad->clock, period);* P% y* O9 B& Y! x# @" ]
// Clock_start(ad->clock);: \) \- H/ O, b8 e- }
// }. f; a$ q2 j" W
$ s' h5 I3 u3 _( G
// 创建定时器8 E: f* d' u4 s
Timer_Params timerParams;3 O c8 Q9 w& h, }' z2 a
Error_Block eb;+ e/ K6 b% `- G. k4 H. \
$ ?5 J+ f* n# F k7 z, j
// 初始化错误块9 t3 ?% Z: g ]( G
Error_init(&eb);# e7 `+ \: `5 T) ?6 Z: i
// 初始化参数 V+ I& }! Y0 t/ |# Z/ j
Timer_Params_init(&timerParams);) H8 b6 c9 K1 S% r1 \
; M* g% \* e% ~5 V+ z( v u* j" O // 配置周期
) S$ `! y/ c0 H) Y% E timerParams.period = Period;
! [8 o* y1 q$ T* v9 g- F$ X- j timerParams.periodType = Timer_PeriodType_MICROSECS;
' {- h- b" t! m! R9 M
+ r9 R$ }# O* `/ ]8 F+ }$ b" j s // 实例化定时器; H6 U2 H( f% W7 l
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);- s6 O, H; M* ^; }0 S% `" y3 A: p
if(Timer2 == NULL)
+ V8 ]8 D8 Y7 E# f5 s" S {+ o; y8 a! y+ a( Q5 G
LOG_INFO("Timer2 not start。。。。");
# V, g1 U5 h! K& j: \7 ~2 x8 o' J4 u }/ t# q7 C) E4 z) `
; ~" e) G/ A* {7 z) |! @ Timer_start(Timer2);8 Z, u4 t/ D1 z/ k3 A& T* R
) Q: m- R4 H. i LOG_INFO("Timer2 start。。。。");9 o2 Z: W" t1 P3 v6 V( i0 E
# t* i% U( F4 \0 S# v W ad->is_running = true;
2 ~5 E# S/ E5 k8 y& e}/ o. @/ ^" i8 c d+ n6 N ~, h; V
. O; [9 w& }8 B1 p |
|