|
|
您好:+ N G7 A' F v( L: C
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
( u, m9 E* h$ ]" E3 f$ U; D& r2 g4 w- \ {
3 d: u7 K0 n* B# g1 h/ }. _/ Y2 ~- c4 k/ r5 z5 |( L
. N( y* g2 w( t- X1 X [0 O
& t. J( `) e# F W7 |4 @ Vvoid ad7606_start(ad7606 *ad, unsigned int rate) {
8 ], I2 h0 D; Q& Q! V// ASSERT(ad);" I5 r' R- O5 ^' _
// if (rate > 1000000 / TICK_PERIOD) {
- ]& {, U* W+ L$ t! d// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
) N z$ H' U$ C$ |, B. B// rate = 1000000 / TICK_PERIOD;
$ B1 E; U8 W b `# _// }' R8 Z o0 ~6 `& u& p
//% G1 o) Z1 }9 R. R
//& M; k* \2 P2 n( M0 ~1 h
// int period = 1000000 / TICK_PERIOD / rate;
, D. x% q# f |4 x) L//
$ ]$ b+ Z+ x3 C1 m. O! P W, |// if (! ad->is_running) {
1 h# E6 j! u6 Z/ l( f// Error_Block eb;! [* ], {! [$ j' c8 c0 U! W7 d* Z4 O+ S
// Error_init(&eb);2 l8 @0 Y, W# \. S; v, a+ B6 l
//3 k$ q0 o3 r. o/ w7 M( \* p
// Clock_Params params;9 r) D& t% p+ R
// Clock_Params_init(¶ms);
" e3 O6 ]$ a$ D/ k// params.period = period;
6 [: M- A9 ]) R' D// params.arg = (unsigned int)ad;9 W k2 z. k. @9 S
// params.startFlag = TRUE;
9 H k1 X4 d& J* h: D, w3 R8 J// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);9 i# o* T2 f( J% ~, j" u3 N
// if (ad->clock == NULL)/ M0 g/ s9 D2 Z, P9 L; X
// LOG_FATAL("failed to create clock");8 d8 v- {( M4 ?; J5 R
//7 P& a8 k2 j0 j9 v5 o6 ~7 p# E
// Clock_start(ad->clock);" s1 s4 l! r* M a2 l9 b4 f1 ]" r
// }- e8 z- p* z. c- D" u
// else {6 C4 H! l4 X) V
// Clock_stop(ad->clock);
3 R9 I7 D# J4 w# u4 ]) f5 z// Clock_setPeriod(ad->clock, period);
z: T8 }; K- n// Clock_start(ad->clock);
! V0 c- x6 p* r+ u. j// }
" @0 L3 S5 |4 L
1 K, ]1 M- ^ c. _( Y5 b9 ? // 创建定时器% w$ f; b9 E2 z; b8 W" {
Timer_Params timerParams;
# `6 _( Q* |/ X0 H/ S Error_Block eb;
+ s8 j P5 B5 E/ V. X5 K3 Z" X h
5 `0 u: ?. t ^7 ?4 G6 _: W) i3 I // 初始化错误块0 r% R. T0 w4 x* M5 V
Error_init(&eb);
4 _/ J L: Q* `5 v // 初始化参数
) N2 h4 ^4 W7 i# ^ Timer_Params_init(&timerParams);
: M4 J v9 q% M2 K( a) `/ `4 Q- v" P# Z2 c' e
// 配置周期 f, h0 c( G: A+ t0 l q8 ^% R5 O1 y
timerParams.period = Period;' b( u/ N% o4 C# N8 Q0 {
timerParams.periodType = Timer_PeriodType_MICROSECS;
: F6 `$ w) U5 b6 G4 j
1 p6 f- V1 X; \1 Z( N, W% x& ^ // 实例化定时器: C) } T ]5 M5 Q# e# T
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);2 m8 K, b; I) N2 M, K# s
if(Timer2 == NULL)
* k* W1 [% M3 }8 ]: x& x0 Z {7 x* E4 G4 A( z% y
LOG_INFO("Timer2 not start。。。。");: N6 `( g! ~. f/ O8 ?" Y
}
/ {: O2 ?& T& E* T/ K+ |4 ?9 |
Timer_start(Timer2);+ J5 R3 y0 S/ I+ r( X: j' o5 q+ I) _) [
+ ?3 x2 A. Q4 b( L- f' N# v LOG_INFO("Timer2 start。。。。");4 s, l8 Y; s+ F* ^3 U: j2 h- Q
# m7 M3 c; g4 g" _$ i ad->is_running = true;* U- M N" @. j
}
i* q0 u* E6 W' m0 ]# B) V, U" G2 p" z6 p% N% G8 q/ G+ ?) v5 O
|
|