|
您好:
, u- d' b4 l* H omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?$ G ]4 `+ J0 ^$ A7 `1 Z5 H: |7 p
9 ]$ ~5 l C5 E7 f0 d, Q8 O9 y0 q9 ~1 h+ _8 n& _" _ `
. l" x/ o4 J: d
$ Q0 A7 j: R" c/ X) h8 |: k
$ R( m& g4 h& z* ]; f( M Avoid ad7606_start(ad7606 *ad, unsigned int rate) {6 n6 Z7 ^$ a4 B. D
// ASSERT(ad);0 @0 d( [7 @+ _
// if (rate > 1000000 / TICK_PERIOD) {
/ V: i/ P& |# R+ h3 p1 T+ J7 ?6 d// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
" O& N e% x9 s1 g// rate = 1000000 / TICK_PERIOD;
1 k0 F% N! r- t) A// }
& p! v3 B+ p8 p# X//
+ C6 [; Y5 y% A% V; V1 p* T//
+ w# x5 M: D- x& L: Z6 D* C% z1 u// int period = 1000000 / TICK_PERIOD / rate;
) e. w) f0 X: S% ^$ ?! T" V//
( t3 h8 I" [+ G6 B/ I// if (! ad->is_running) {+ h5 n$ T1 ?! ]) ^; N i8 O; E
// Error_Block eb;
9 o1 L% |2 m& z! i1 A/ S% |// Error_init(&eb);
$ |# p$ }1 f+ q% `' ]//8 v7 v9 Y: O% k) E+ Y" c5 `7 b
// Clock_Params params;
' w: c6 q& k$ p5 ~7 E. E// Clock_Params_init(¶ms);& g* Y' J9 k. g% {: ^9 x
// params.period = period;
8 i- R+ P: P9 R. H, c! U// params.arg = (unsigned int)ad;
: U% A6 e3 f, _# z) n2 _4 Q8 z. x. q// params.startFlag = TRUE;
; G0 h* g% S' _7 m( Q# E// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);+ f8 e: H8 }1 Z; x' H7 s
// if (ad->clock == NULL)1 ^4 Q* b7 N2 D; ^ H' ^
// LOG_FATAL("failed to create clock");' p+ R |" a8 Q& Z7 m6 S8 B
//2 ?" M6 }# S( z8 L2 r/ d+ k9 L
// Clock_start(ad->clock);
' _7 ?7 C4 Y3 w2 K// }
# I7 E4 b9 m; f" m# A! h// else {5 P( r1 b0 l2 u" L
// Clock_stop(ad->clock);- O( V8 \9 ^5 R' b4 \! F+ l
// Clock_setPeriod(ad->clock, period);
. g& A# A0 L) G# K6 r// Clock_start(ad->clock);+ t% v" m# P) ?+ z
// }4 U7 R$ t% t) q9 B2 _
6 d0 x$ N# U# c4 O' o
// 创建定时器
5 e5 U/ _0 L$ G' @: j5 O- p Timer_Params timerParams;4 ^6 {9 J8 N) W. I
Error_Block eb;
! k/ y8 y1 n7 O/ R& X% \1 i$ P2 X9 y8 A$ f, E" x9 O+ C
// 初始化错误块
* V$ \. |- _) A3 l- I7 v Error_init(&eb);
1 i, F ~0 j& j5 f/ I% b // 初始化参数 d3 g3 |7 x/ f9 ~6 W' a
Timer_Params_init(&timerParams);7 D. M' _" A f/ n4 H( Z& H
) ]8 g2 F% K: {9 e! u* m2 l
// 配置周期
- Y7 I9 _( V' K, G9 I' d timerParams.period = Period;- z) F$ q# m% }, q
timerParams.periodType = Timer_PeriodType_MICROSECS;
; y" f1 n. X, K7 z$ q& s" [0 m: q$ O7 j, L, A8 `8 ]
// 实例化定时器
8 J7 Y& ]: K1 W1 h { Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
6 X8 D% v* }, E3 a9 Y# W* M if(Timer2 == NULL)
& |% q+ M' o) C, l- t {
- z1 L4 u) e2 p LOG_INFO("Timer2 not start。。。。"); T( j3 J( d; t9 I. \5 \
}7 d# O6 }: a7 g+ c8 Q* {* N
2 g4 U& i$ o' b: ^! P! a Timer_start(Timer2);
6 `5 d) ], h" E1 U# K' [
. x4 [1 s' h( Z2 X" H0 w ]" E LOG_INFO("Timer2 start。。。。");* [! J7 d+ e4 U2 l4 D, B
, X. h" ?/ u6 D8 c: u0 N4 U' W
ad->is_running = true;
/ e3 d: V: k1 y! b}$ q5 P, f( X( e0 Q; p
* n$ a+ L* F3 _, V |
|