|
您好:1 u9 x1 `5 Y/ K
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
- B- Z, s4 p& P. r# f5 x$ D }8 l4 q/ ~! Y0 n
9 K1 ? t" k0 T: G0 g' E! ~. L
# M% e S6 O N# L8 x7 O
0 r" @( _& W5 Z
- X8 F G8 I3 e; I$ o. m7 @
void ad7606_start(ad7606 *ad, unsigned int rate) {
& S, J5 v5 |$ U6 u( D2 m// ASSERT(ad);
* F' \* x; U$ p// if (rate > 1000000 / TICK_PERIOD) {
4 ?( {6 ~/ a5 x$ w7 m// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);4 |" \0 @$ u! i0 n
// rate = 1000000 / TICK_PERIOD;% o( X- M) W# R1 L( z7 {2 ?, ?4 e E2 ~
// }
$ ?% b- u) |- K8 b8 l//7 U8 z1 \! {1 P4 B F
//
* [: J3 U) D7 c8 h4 t// int period = 1000000 / TICK_PERIOD / rate;$ m, u& o {8 Z/ x1 g0 U. _# F$ l4 s
//3 J$ f, v) w6 x5 S2 K" c N! C
// if (! ad->is_running) {7 k- Q- ]/ l) `. z/ q$ \ U" B" X
// Error_Block eb;" B3 X2 b6 T- a1 {8 ~
// Error_init(&eb);
/ `. ?" D2 y( c, H& w//
* M; K7 K* r% D1 N// Clock_Params params;" U7 v) l0 v1 b- X; I0 I
// Clock_Params_init(¶ms);3 {: f$ G$ }. P4 u# b$ C; D
// params.period = period;
) L. [& a6 |; c, p4 x: |( L! u+ Z// params.arg = (unsigned int)ad;/ V+ `1 c8 P& R& u2 }+ `2 U
// params.startFlag = TRUE;
1 K( U; g/ @8 u$ l! W9 n. Y. g// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
' h: m7 \4 C3 H9 t$ N// if (ad->clock == NULL)
8 _ K; M4 N8 e* b% B+ B// LOG_FATAL("failed to create clock");
/ [+ ^4 B) {: T/ P//) Q5 f' h) @1 v8 M2 V& Z+ F! u. N
// Clock_start(ad->clock);
2 @2 W! |/ ?+ X% o5 B// }9 M# |: t7 O1 |5 [1 c* F( U, N
// else {
5 P( w9 }, A* b7 H0 g# T. H// Clock_stop(ad->clock);* J( \& L9 j [- j6 D; D
// Clock_setPeriod(ad->clock, period);
4 B4 B: n6 t5 G" ^ ]: T// Clock_start(ad->clock);
/ h# b: K! \9 |3 V9 G// }
7 F. D5 R% `- w3 r/ ?0 o: A% {( r) P* n; W& y1 T1 z
// 创建定时器
1 }4 ?, [1 a3 k: _ Timer_Params timerParams;% F8 K$ T( c d$ i- E
Error_Block eb;/ h, l+ d) e0 s( L! y, |1 u% B
5 z1 b0 b4 j0 |* _* v
// 初始化错误块
3 E4 M2 v& ? D3 ?* r Error_init(&eb);
& x+ m3 c1 w h // 初始化参数6 q" V6 |! a& D) P' g7 W/ G
Timer_Params_init(&timerParams);
( u k3 k3 U# j& H4 P" J8 v. ^7 [' `+ b& V2 r9 K! ~
// 配置周期
+ V% {/ s4 ~8 M: a5 j timerParams.period = Period;( W; B) D" [$ ?+ i0 D
timerParams.periodType = Timer_PeriodType_MICROSECS;: O$ @" g& G+ }) r6 V7 t
5 F4 E! e K" H* O5 W6 R. j
// 实例化定时器- N: F2 v2 m. b; I* J0 F
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);3 G* j8 O" ^; w4 d/ W" S1 j2 c) r! H
if(Timer2 == NULL)8 Z4 p5 ?2 \: d* B
{9 P* [2 Q- N+ I7 ]( k7 p
LOG_INFO("Timer2 not start。。。。");- w' [0 D: M. L; r: s+ y
}
+ a* `1 {% b, K& g7 m
4 t. V/ o+ e/ U& F; } Timer_start(Timer2);
% F m, g) j: C, x/ ~$ H( G9 \& w8 B2 V q* k2 s
LOG_INFO("Timer2 start。。。。");
# i- e) F' M i( j9 r U% `
- s5 H# q: P9 Q8 S0 T7 m6 F! } ad->is_running = true;
% Y4 J& C+ g1 X T! }* P}$ a1 {; G% d8 a1 y4 w9 H
6 W L8 U2 h1 Z8 M
|
|