|
|
您好:, V: w F4 [5 o. i9 j S( M
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?9 b4 ~9 I; K, s8 x0 i
* W* L7 p1 F& x& I4 g
" t3 f* S) N' W" O9 g; z
8 q. w2 m ?$ G3 \2 T& y# }% {
# g7 H2 `5 C# N! Q) H( ?/ d+ q0 n/ ]& ? J3 G9 i; |
void ad7606_start(ad7606 *ad, unsigned int rate) {. ]& T1 s9 u6 l; s y
// ASSERT(ad);) Q, e) f. M j" o! r' }8 J {) {
// if (rate > 1000000 / TICK_PERIOD) {) T: P# g2 R" I* F) [, U) N
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);6 ]' @+ u' U1 t, K# N3 z" v( F) t
// rate = 1000000 / TICK_PERIOD;
9 v Z5 H `0 a// }. e; c# w" Z( o' s% j
//
* j8 c& k. i5 U& }& R( \//
7 ]' }/ ~6 a9 a% Y0 y# [; s/ ], i// int period = 1000000 / TICK_PERIOD / rate;
( T l5 y# X$ ?//
/ N* a! U6 a% n4 v) A; ?! o// if (! ad->is_running) {/ V u$ b% B' L4 Z
// Error_Block eb;
- C8 y2 j/ {7 E( N// Error_init(&eb);
9 @( w' h: O' d, }1 m//' L H: E6 m9 r5 _
// Clock_Params params;
F( Z p! K! Q+ |0 s, V// Clock_Params_init(¶ms);
; x8 W0 B6 R( A7 @// params.period = period;4 s! n. d$ j0 t! x' Z( f8 g
// params.arg = (unsigned int)ad;
1 P; B1 f3 f4 @" P' V// params.startFlag = TRUE;/ ]" O( U& j6 k Y+ g1 K
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
* t% g% p( x6 o% O( R// if (ad->clock == NULL), a) N) @; ]: l2 o# [# I1 j. r
// LOG_FATAL("failed to create clock");
6 Z7 f/ d- M& L4 G, e: N: d//; m& T8 J3 Y3 K" Q- y: U
// Clock_start(ad->clock);
8 w; F- R F) P' f& M// }0 n% e! I" M! C' w
// else {' H. B# Y+ O% k' N. z
// Clock_stop(ad->clock);
( c0 [9 v. T. f" {- c// Clock_setPeriod(ad->clock, period);
6 q! J) u* i0 n1 M// Clock_start(ad->clock);
- V2 T5 z* B- _0 Y* }) q8 I# S3 A// }
& v/ F% ?4 \! z* ^
3 {' B+ _6 X( s6 v8 ^# | // 创建定时器4 q& L' }& ]: ^" G7 e. G' d+ j% j
Timer_Params timerParams;
1 ]4 L* B+ a1 L: @ Error_Block eb;% k* t& F o" M
* V) v! l% H5 e5 j* x
// 初始化错误块
o3 Y6 X5 q& T( ] Error_init(&eb);+ @& F( W1 H r! u2 _$ O* @( q) \
// 初始化参数) K* U [( `# r3 p' g
Timer_Params_init(&timerParams);
, x( v# R$ _4 i% X& n2 K1 V7 Z; N' I# w5 f% x
// 配置周期
/ K) ^3 i: S% X timerParams.period = Period;
) O& K& ] Z. ^( Y5 j timerParams.periodType = Timer_PeriodType_MICROSECS;
/ I7 I2 A3 i8 W: l8 s' D7 F' n" {* U7 O; |
// 实例化定时器5 T+ V2 ~2 u6 ^$ h; |7 ^ P
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);" k, I1 V# H% _9 s
if(Timer2 == NULL)
d: `4 f' C* o% @, I d9 R) ? {
U3 v4 b2 N) r6 G( S LOG_INFO("Timer2 not start。。。。");2 {4 ]$ S; `) f# O% S0 Q
}
. p9 U; x' C; g! _+ i! K
9 I7 X5 j% w$ v Timer_start(Timer2);
; |: y, Z& p- W
5 [0 x/ I7 ^' v) G- J LOG_INFO("Timer2 start。。。。");$ t4 M% D) Y3 Y% M. j
. F' q: _' K4 H: j4 I4 e7 {
ad->is_running = true;+ m) J( W: H" X- c! Q
}
' J' H% t" Q' T- Y; T; I' g5 h3 ~ e- L
|
|