|
您好:
8 S8 v. I4 B c& [4 U$ a/ | omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?; u$ n* V/ `# T. O; Q
1 V7 q, v% ]. R5 @7 x( z6 a5 _. S6 {, `; n x2 `, |2 O5 |
& K' J9 Z, S& J/ \$ q1 a7 M8 r, Z; O0 P# S8 s
7 V" p9 f, P/ s# a; t
void ad7606_start(ad7606 *ad, unsigned int rate) {
$ O' Y* p* v. {) c. T* h( A2 B; U// ASSERT(ad);5 o; G' o9 u4 V2 @
// if (rate > 1000000 / TICK_PERIOD) {. Q8 _: R, b3 i, W" d5 }) S
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);# ?4 H9 S4 {' J
// rate = 1000000 / TICK_PERIOD;
! x0 b3 K0 [, \5 h8 S// }: M+ K- A/ ~6 Z% I$ H
//3 K# r; }3 W# `& S j
//
. t4 |$ X6 C7 M4 j" A2 _// int period = 1000000 / TICK_PERIOD / rate;
" D6 O1 Y5 C/ T" U. }//7 z% F0 V1 T. }8 e5 T
// if (! ad->is_running) {( M4 r* r7 l1 x X) U" q
// Error_Block eb;
# I3 K5 U! y* x G% N G$ d7 X! X// Error_init(&eb);
: W6 e) t. Z. p! F8 I//
' ]. q0 G8 G2 I/ s// Clock_Params params;
: N% q- D8 X. D; [* _3 T* y0 z6 s, D// Clock_Params_init(¶ms);
. h# M; Z/ j; m// params.period = period;
8 j9 f! F; i& l// params.arg = (unsigned int)ad;9 ?3 p# Z6 }5 i+ F) [* z
// params.startFlag = TRUE;. o9 j% i7 O/ S# p# j* T$ y
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
b+ o6 z! q: {) E* C* a// if (ad->clock == NULL)7 _" l" \; Z8 \/ z6 F( _
// LOG_FATAL("failed to create clock");
( o) m4 G: |' }" f//
# Q) |( z; j6 w; ?// Clock_start(ad->clock);; v6 m+ p+ X7 {0 W2 t
// }) ]3 O! X. z! M0 h8 T
// else {, i; u- b ~1 o
// Clock_stop(ad->clock);
; M4 N6 x4 w& X; _9 j// Clock_setPeriod(ad->clock, period);" I% M; ^4 [/ b% K5 L. J" W/ y+ ?
// Clock_start(ad->clock);
* m* M; f5 l7 l5 B4 {* {// }
2 l2 H4 r1 x/ T0 I' I0 u$ @6 f
1 S4 p2 H8 S, ~8 i3 D4 a // 创建定时器
1 b: M x- W/ I& [, Z* C Timer_Params timerParams;1 U5 e: M. T; {
Error_Block eb;1 z: h) b: ] _/ v. h) G/ [
, b: D o* K4 B; z // 初始化错误块3 E H7 w+ j( [. ]* P- V
Error_init(&eb);& v0 k k* _9 |0 K
// 初始化参数
- E! r/ v, [( o% H" ^8 b Timer_Params_init(&timerParams);
6 W6 _& ]+ ?2 F1 g5 c8 f! T2 x0 M* w9 V
/ }" u/ o5 z) n- \ // 配置周期
; d0 U4 n2 h7 T3 x timerParams.period = Period;0 P, P4 i6 u7 `
timerParams.periodType = Timer_PeriodType_MICROSECS;' G+ \6 e: U+ M7 g9 H! g
& W: V; ^4 A0 s* t7 t8 I // 实例化定时器% B+ j" A' s9 \7 g$ `; x' d( O K- X
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);0 L9 @3 f2 }: d: J* a2 y4 |" T0 y
if(Timer2 == NULL)' v+ N* B' I$ @ q. D' P
{( c: u f) `0 C, l
LOG_INFO("Timer2 not start。。。。");
& E* n- Q; f, ^( \) U3 a# @4 Q }0 Q9 ^: R f2 g; {
7 @; H/ M8 I+ ]! W) ? Timer_start(Timer2);9 m9 |3 \) i& {2 f) r; o
( I6 E9 e, u$ ^" i LOG_INFO("Timer2 start。。。。");
/ J* T! A/ A! t& }, x0 q3 P/ G, S; L, r( D' K, Y
ad->is_running = true;
" B9 V+ _3 E( m$ u}
( ~4 h8 I6 P" F0 N) x/ U! y, n/ D$ e
|
|