|
您好:! g4 `5 k1 q3 X; n
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
/ k' n" G1 O- q4 Z! t a& K1 n7 j' Q6 r3 e* A$ k2 n, i
, w7 ^- b4 c2 F* o0 O! ]8 ~6 O+ q% G& A; I$ v
7 V2 r; R( f0 l% Q/ j+ l3 p4 K8 i4 i6 O3 x7 Y6 z6 a. D
void ad7606_start(ad7606 *ad, unsigned int rate) {
6 [1 P+ C& x3 a7 y: _// ASSERT(ad);4 T) G$ N$ h r% ~! I( R- r3 j
// if (rate > 1000000 / TICK_PERIOD) {
7 \ q. |7 v# u/ L$ P# U// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
n& n: n4 n. f$ v: Q// rate = 1000000 / TICK_PERIOD;2 g; \0 J: U2 R% ]
// }, a9 Z% M9 u; Y* g& f
//
) i! c6 } y1 n. N/ {3 Y//& F! k( }1 n% s, @! V
// int period = 1000000 / TICK_PERIOD / rate;% p$ e4 b* S0 S, X
//, t: N2 K5 N S* q) r: a7 ]5 Z9 M
// if (! ad->is_running) {
% t7 i. k2 o* ?6 }4 g3 D8 x// Error_Block eb;
6 O. f) {! o% u' l p0 h9 M m, z// Error_init(&eb);
) \) g3 ^3 L# P0 a' \+ A# V# n//
! \$ k. y s! s; b- G5 a, s J/ u// Clock_Params params;
6 r; d8 {' c+ q3 y; Z4 k// Clock_Params_init(¶ms);
7 ~; L- W; N7 I$ r. Y4 O: F// params.period = period;0 o: w$ e1 ^# `& a, H8 u) k+ |
// params.arg = (unsigned int)ad;
8 o5 }: O" N3 d1 _// params.startFlag = TRUE;: ?% |# _8 X. `! D2 C9 p
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);2 P* m2 H/ k2 A1 P
// if (ad->clock == NULL)7 k8 l1 _$ F- G+ U& B$ u
// LOG_FATAL("failed to create clock");+ Z% p9 p/ y# l! }
//* _3 R3 x/ d6 m5 V, }5 n
// Clock_start(ad->clock);" O- X1 g9 B4 |0 Z7 @; v
// }
2 M k0 I& ?' [: \: j1 n// else {
9 A2 n, A0 y2 t. e. i// Clock_stop(ad->clock);
' o4 o9 T% X! `. z3 l3 Z* t// Clock_setPeriod(ad->clock, period);
+ `/ Z& M9 n' b5 ^: e; q4 e// Clock_start(ad->clock);( j8 g& X5 b: r# X8 Z9 f
// }
9 p9 {2 z" N+ d1 s! X7 s* d8 T' d1 w
// 创建定时器
: ^6 T/ K& M% t5 \ Timer_Params timerParams;
: f7 Q; @( A& E7 o Error_Block eb;
% L3 Y8 K; E9 h$ @* f1 ^( t9 A) {8 V
// 初始化错误块
) k# F, U+ [ ` Error_init(&eb);2 v* L2 ^) i) {1 u! |
// 初始化参数4 T+ j& G7 A3 K5 M0 t$ ?
Timer_Params_init(&timerParams);! _8 b* v, ~) M; U+ S) m7 ]
* b' D9 {6 R7 E. f+ j // 配置周期
. ^7 e: o; h2 D$ a9 T6 ~ timerParams.period = Period;" g0 K: j- N6 q8 Y) u; S5 l9 C
timerParams.periodType = Timer_PeriodType_MICROSECS;
, a2 U+ U( m% _' x8 i& [, m8 S
. l% K* J4 V# Z // 实例化定时器
; ?8 ?4 X6 _: e7 ~ Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);* v& P1 l6 |( L
if(Timer2 == NULL)
( D& f4 U7 O- t {% V1 b2 Q! {- s+ s' @( o, p
LOG_INFO("Timer2 not start。。。。");
5 m% _, J3 y. V% o! U5 {# ] }
/ p+ c. p) x! l3 K7 ~7 ~" S7 \3 n9 u6 Z3 q
Timer_start(Timer2);5 S, K) o0 }/ y4 z. J: N( f
* U% f2 p+ f# h3 O/ l/ W LOG_INFO("Timer2 start。。。。");, d+ d7 |$ a6 r# {
1 \& x6 V, v# N# |1 S8 O5 R ad->is_running = true;/ k/ L9 w2 _" K) [9 q
}
0 \1 x, R+ m9 i" N% I- S1 O" A- F6 j9 |4 b7 ?2 d7 \
|
|