|
您好:
, v$ A4 `: y( a M6 Z+ I4 {! _1 E omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
' P# Y b9 P; R1 d3 ] l* L Q" w9 f' R8 i, F. }$ ~+ o
$ W: @# ?% S7 H8 f" J/ Z' S, F( |2 A' I% K: o/ u
* I9 N; p6 S+ C% L
$ \- R) ?6 t; S! V+ m& J/ T. a
void ad7606_start(ad7606 *ad, unsigned int rate) {
# j2 z7 N8 x5 X% F/ Z6 t// ASSERT(ad);
& D2 {" `4 l3 [4 `5 p// if (rate > 1000000 / TICK_PERIOD) {
4 F' { ^" q0 N& K2 ?// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);/ B1 G1 k3 _) v- H9 e6 Q
// rate = 1000000 / TICK_PERIOD;8 R1 Z+ U0 o- ~6 V K# I
// }( o& d' ]) k; ]3 |1 h% ~. V
//+ U$ o, ? `; c: ^
//
$ R! U7 Q6 e3 }3 R2 I6 s S// int period = 1000000 / TICK_PERIOD / rate;
" r. s! W7 o1 L6 q/ U! I) S) g {' K//
/ R5 i* i. }+ t$ N, p! q// if (! ad->is_running) {
9 F" ?7 r$ Y" G% q. ^5 e// Error_Block eb;
% W4 U' \( o, w/ [8 p5 [% [: D// Error_init(&eb);
4 [/ h1 e; f2 L//5 f7 r1 J5 I( {% _: a; G1 F
// Clock_Params params;
" U% P( a3 w9 V J3 w8 _ M8 e" p// Clock_Params_init(¶ms);/ _$ ~6 e8 l( O- f; K
// params.period = period;5 o$ u# ~0 A/ K% K, Y1 i8 p$ A
// params.arg = (unsigned int)ad;) v, x) ~; }* D8 L) x0 Y
// params.startFlag = TRUE;
) C* ^0 T; J# f' O8 m9 x// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
$ e- O7 ?8 R5 z% x- f# G0 [// if (ad->clock == NULL) _4 p$ s: `4 D" g/ r' o X
// LOG_FATAL("failed to create clock");5 \, C7 E$ w; V' D8 ^0 Z/ n5 P
//7 [: r* J- b, f2 ?
// Clock_start(ad->clock);9 r0 K- q Q5 a9 e
// }
# J1 K; E- p5 T2 D// else {) o& H& T% T1 F2 j# Q9 m9 A
// Clock_stop(ad->clock);$ V% p% Z9 R( i) P/ `6 a8 C* u
// Clock_setPeriod(ad->clock, period);: O5 |" s# l- y& g$ S
// Clock_start(ad->clock);3 L4 t8 k% t3 S* P2 c
// }/ O8 g$ X9 ^- v7 |) S
8 B) g! m5 g8 f4 a" v+ v
// 创建定时器
/ q) t& q( D" }" g# u Timer_Params timerParams;
* U2 E$ u. _( ^7 t Error_Block eb;
, D, c/ R/ X8 _- |5 N, {4 _0 i7 v; H. w( |
// 初始化错误块! M+ h+ s5 z5 ^6 j+ d
Error_init(&eb);# C+ b; X8 q0 b; b: c
// 初始化参数! y2 L, h# |, `2 B* P4 g
Timer_Params_init(&timerParams);
" `! s4 k0 z4 D; e/ H9 Y) _2 S7 ]* {2 B- Q& l# z# i
// 配置周期
1 ~4 z) r2 V* u timerParams.period = Period;6 e( A' [( z7 f0 X. {
timerParams.periodType = Timer_PeriodType_MICROSECS;
0 \% Z/ P! }: V% d- b. G7 g8 w& V
- ?" \0 P; g, Y' W4 K2 o // 实例化定时器' L/ c- f, R# A$ r4 Z/ {3 G
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
" ]6 O+ Y# ]/ C0 }& F if(Timer2 == NULL)
* t: p1 m0 Q" z0 |; T' C) L3 ^6 v {
! l# f9 H3 I; B" t" s LOG_INFO("Timer2 not start。。。。");
0 n( ]+ @$ V U+ t. A }
4 E$ r: C% Z! A- Q D- i
* }! S& j" h5 N0 e4 a# F Timer_start(Timer2);
+ ?+ G" d' f8 @; ~, q) m' K, ~2 c
- t' M4 v' H6 u. s) s. ] LOG_INFO("Timer2 start。。。。");! m: q8 g) `. M+ a; O
* M* C. B8 t4 o- Y, Z ad->is_running = true;
& j- R2 Z. K7 x& X3 |% `' t! Y& q; j}9 o9 s: I+ l. p& L: i8 y6 l
1 E) h O8 v# f3 v3 R: Y9 s3 P
|
|