|
|
您好:
) Z! M X- c a2 i- z8 C omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
; _0 u$ \- d4 e
/ w! p8 J+ R# a7 A! l: R
* r: O" q" m& k
) A# x# P# `3 [5 d4 t0 ^" \9 R% l, F- a. N% \9 }8 K
: l- i4 @6 s9 S( ~5 L" Qvoid ad7606_start(ad7606 *ad, unsigned int rate) {
- j5 A1 ^# ^/ ^- k( Q" }1 L// ASSERT(ad);* y. j' E* J! V3 I! N0 J3 C; C; d% ]
// if (rate > 1000000 / TICK_PERIOD) {
9 z$ [# x. w4 I( Z// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);! S# v* }, q/ T0 b d! l6 n$ U7 I
// rate = 1000000 / TICK_PERIOD;
2 V# ?; R& J- R% ?9 x( Y// }! x; j9 ^9 _$ C+ N2 z- {. {8 D
//3 o) g" E: I( n& u- F% U( `
//5 L8 |2 d4 z4 R" y$ F' @/ s. w6 C$ Y
// int period = 1000000 / TICK_PERIOD / rate;
* {4 q5 g$ I3 ^8 d! g+ J# a//
, T0 C' `' b! z// if (! ad->is_running) {
# ~1 O! F7 I+ X' d( K( e// Error_Block eb;& C+ ^5 Z- S* U& b* N& s
// Error_init(&eb);
+ {8 ?$ C, a1 y0 ?0 m# n//. w$ N( j9 B) C: l
// Clock_Params params;4 ^% Z* G& A- f
// Clock_Params_init(¶ms);8 U" q C. x% R+ t
// params.period = period;4 ?. L S9 q/ p f2 V) I+ U" K
// params.arg = (unsigned int)ad;2 e6 M+ }4 Z+ q8 d5 p7 i2 D2 E) ]
// params.startFlag = TRUE;
7 b5 n" g1 n& d3 N8 R7 z// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);. q+ H3 |, h+ u: p- i
// if (ad->clock == NULL). x) r& Z8 R# @8 G- v1 P
// LOG_FATAL("failed to create clock");6 J6 j& g' U3 Z# ^: W
//
3 q4 F# c6 U! Z% V$ L// Clock_start(ad->clock);
; f4 c7 \ N; g* k1 w! z/ i// }
3 S/ Q+ h9 K: a6 U// else {$ G0 C: ^9 n0 j) N- e( G! e# n
// Clock_stop(ad->clock);6 B/ {6 K, \& M* Z' o/ I. U
// Clock_setPeriod(ad->clock, period);
! k: {+ e0 z% f% a// Clock_start(ad->clock);2 ~) _7 e6 v: K/ H5 {
// }& k; B( I V& }6 o$ d
3 V0 a; `" h7 C r2 E2 [) m3 {8 e1 s // 创建定时器
5 Y% {5 y4 m; [- w- }- S, [ Timer_Params timerParams;" m8 C+ U3 G v2 t
Error_Block eb;
/ C: L( O4 L K8 o b
: {3 r- @4 J# P( q // 初始化错误块
7 L* a$ v7 y# o# q! Y Error_init(&eb);3 m8 T4 X% E' b) k3 v p! y$ K5 _
// 初始化参数
' _, y' l: B, J* f5 }" j+ Y/ g" w. g Timer_Params_init(&timerParams);0 c0 W6 }6 c$ w7 @* @! G; V3 ~9 A
0 i0 O) h" H+ i3 }, X% t3 f$ U7 A // 配置周期$ Q8 e( z5 f) ]' M, j" B
timerParams.period = Period;
, q) D2 V' K( D9 k timerParams.periodType = Timer_PeriodType_MICROSECS;) _; v4 P& S! u( h9 W9 j8 R
) \2 Q) R# G7 u# L* ]: I, B1 l // 实例化定时器/ L2 |/ l5 c3 e* b- V6 m( v4 t
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);; V( S/ ?8 q# @" Y
if(Timer2 == NULL)
: I& H, ^& n( v' b: u# A {
1 f* L9 j' [! q0 E* s* [ LOG_INFO("Timer2 not start。。。。");
Z% \) U( E9 J; h) r }2 o% s4 c0 {+ A0 G* k4 P: G' p
2 ?9 H2 e9 p6 H w8 u) N
Timer_start(Timer2);
/ A. I0 P' m& A. I8 W/ D2 @- W
+ T3 Z' W) }/ H) T LOG_INFO("Timer2 start。。。。");& @% G1 u% J) }9 B( A5 T' X- o
. X! o, V# i7 U9 \
ad->is_running = true;
9 @3 B1 k" v6 T; }/ ^- F' U}1 b7 O$ L. w8 @( O- V
) N" k& X0 B' {1 Z |
|