|
您好:7 i8 M, K; W; g" o
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
* L7 ^1 S, D y4 y X1 d, B+ L+ k7 @$ i/ v4 P
3 x4 x2 k" c! b+ d
. U. h& A/ n; O( S ?6 J; x( I& T% R0 t
G2 f# r& g# U" bvoid ad7606_start(ad7606 *ad, unsigned int rate) {
6 p9 N A8 P5 s' L/ w0 E// ASSERT(ad);
" {2 z$ D6 x# D+ I( G& ]6 f4 n8 ?// if (rate > 1000000 / TICK_PERIOD) {7 @ n$ O7 r! v7 ]! ?
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
& u1 M0 [7 t- Z" i; j// rate = 1000000 / TICK_PERIOD;: `5 P: r9 M1 R0 m* c2 u& f5 ?4 u+ E
// }
7 p# I4 d7 X0 d* Z4 P//, f( |% A# m* U; t
//: u& l7 h0 @, R$ s
// int period = 1000000 / TICK_PERIOD / rate;
: `: P# P4 c4 F% C//, e4 [' e* V( S$ |2 h
// if (! ad->is_running) {
2 M. N8 q* P1 O5 o! C1 f3 P// Error_Block eb;) k; { p/ k7 @/ D- v
// Error_init(&eb);; X8 |4 o1 F9 w4 M% |( i2 T1 C
//
: D5 L" e% c- _! j/ d// Clock_Params params;5 Y) r% R' u: ~) k! `& }; ]& G) p
// Clock_Params_init(¶ms);6 Y/ d9 a% q& Y J8 [3 h. T( V
// params.period = period;& {% y5 k& p, E
// params.arg = (unsigned int)ad;
. s! ?% W- E9 ?( `7 ]; Q5 x// params.startFlag = TRUE;
$ Y4 Y- i( F0 {+ G( E# ~// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
1 @, f7 X* t, j/ m- S6 x8 [// if (ad->clock == NULL)+ K/ y B5 K6 B2 b- u
// LOG_FATAL("failed to create clock");' N/ [ t: `; H/ k1 R% W
//
k% |# L/ b2 C9 K& R// Clock_start(ad->clock);
1 r9 U7 _, h3 I6 r- G+ C// }: x# P" O( _4 y" A4 \4 X) ^5 ], a
// else {
4 J3 Z5 ~- T# ]0 C# @5 q// Clock_stop(ad->clock);$ d( |. w* w: [$ ]
// Clock_setPeriod(ad->clock, period);5 c( g, }! K( t4 F, C
// Clock_start(ad->clock);9 ^" A9 ~! z! k! X7 R5 s
// }, t' O/ i1 N- {4 G9 \3 L6 x' k0 t
% ~8 ?6 C) A; m( l) |
// 创建定时器
* H0 {7 ?, ]3 k3 y Timer_Params timerParams;9 ]5 \' k6 k" }7 P
Error_Block eb;
$ y- q) P5 ?8 T3 z7 F/ y; S- [, }6 Z1 w! @8 g/ E, e) w; a0 D
// 初始化错误块
( P5 {: Y/ s0 c" @% b5 U& T, M: m Error_init(&eb);9 y5 ?" ^2 J0 l ?5 h
// 初始化参数
$ D/ N- p, X: ]. @. ~ Timer_Params_init(&timerParams);
7 c2 W, k" R2 _0 @) M$ x& Q% Y$ n* p( s, w; b
// 配置周期
. ]9 l$ ]& A8 K5 s5 o+ X, @9 C timerParams.period = Period; o, }4 x4 b! h" U
timerParams.periodType = Timer_PeriodType_MICROSECS;
3 C# t. g4 }( f! t, E( Q, A0 B$ L3 ]: i2 K1 M# {
// 实例化定时器8 ?6 `8 q }9 t2 s# b/ S
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
, X! }: A- i; k2 I2 g0 ~5 Y7 r if(Timer2 == NULL)7 [6 Z5 Z5 _0 ]2 U `/ g
{5 g4 ]4 t2 v' z% K+ e2 V' ~ b% H
LOG_INFO("Timer2 not start。。。。");
8 R0 d2 u. b6 w$ _8 [# |) f" g0 F/ z }( ~+ `# ^( F0 P0 N- ]! F5 C d2 p
# z) h8 _ O- |8 h+ a
Timer_start(Timer2);
G/ w; k7 Q o& t' L: b: I$ K6 i- R$ s9 i7 R; E5 p
LOG_INFO("Timer2 start。。。。");7 P" k8 y, L+ F# s) o2 O3 _9 J
% J+ D; f9 o- ^9 W9 Q1 q6 \ ad->is_running = true;
t. p3 v& T* G% Z7 b; W1 t0 L( m4 x}
p% R W- j1 k4 h* E. z/ O. K8 e7 ~: l1 [6 b) z( c& Z
|
|