|
|
您好:
4 [3 d' q' u5 C: P5 \# W: @4 I. V omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
& L3 s# A1 x d( D5 [
) W7 t( j7 o3 o% D$ s0 e% `# B3 z
. P9 J/ B$ r. g3 m$ o( p$ ~8 x+ |5 r5 o! c) n# C, `
6 z( ]# Y: [9 r; r$ T4 l7 P
* y$ o2 i. I5 Kvoid ad7606_start(ad7606 *ad, unsigned int rate) {6 _ d& W* R- Q7 {" G" W
// ASSERT(ad);
3 d- w5 h, e/ N3 T6 R, R// if (rate > 1000000 / TICK_PERIOD) {
0 n/ @" I! f: h// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);" D# ]$ Q b& x
// rate = 1000000 / TICK_PERIOD;+ a! X7 c$ k, `3 P) O+ _- I
// }( C% o9 S; C' C4 ]' F
//% `& N( z: N& y
//
& Y m) J7 }3 b0 p3 F# ^// int period = 1000000 / TICK_PERIOD / rate;
. z7 `7 Y3 H4 e. N5 `2 q//
: x# a3 Y. N3 ^% S# c& L4 }0 C// if (! ad->is_running) {
/ D0 i, R$ q& d4 {// Error_Block eb;
2 [7 b' l5 G) e" h3 n9 x, F// Error_init(&eb);# |! p" ]* r# `$ Z
//
+ v n' C# F: |! ?9 m! x# @# ]// Clock_Params params;" o* z0 A) _# [
// Clock_Params_init(¶ms);; K8 j5 Z& q/ l% ^- n" L& R
// params.period = period;
3 B: a0 u) y2 \) F+ \// params.arg = (unsigned int)ad;
l4 V3 W) N" ^$ a// params.startFlag = TRUE;* \8 ? Q; H0 k
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);' w8 a# e* d' C3 z" C
// if (ad->clock == NULL)
9 t! c5 \/ P* a8 _6 z0 j ?// LOG_FATAL("failed to create clock");
( `& d( z! r' X//
$ g# J' f" X+ A( p+ L( J// Clock_start(ad->clock);, P- @) w9 H" `7 P0 E
// }
# J5 N, G- a9 [9 u+ a1 Y" U// else {
+ J P. I$ ?% |) U// Clock_stop(ad->clock);& {* y+ K9 q- i% R
// Clock_setPeriod(ad->clock, period);
# s8 [: x" c3 M! p$ ]// Clock_start(ad->clock);
6 X1 }: U2 B6 q% X1 K// }" u( m7 b' a4 Z# H
7 j' F7 B; _* D: z1 U" O
// 创建定时器
7 |1 w8 _3 \: ^ M/ j& j$ _) c* h Timer_Params timerParams;
4 X. ?: }3 s: w1 F- x+ X6 j8 ~$ {! G8 s Error_Block eb;
7 c/ v5 a* o T# W5 n9 j( u/ `
6 }. p4 o; n* i: M* R' q+ s' i // 初始化错误块
% V5 m- y& e/ p8 k' o; q Error_init(&eb);" m% F2 K4 h8 `% R! `* `' ~
// 初始化参数
& n+ H& |& E5 r5 q# L Timer_Params_init(&timerParams);
2 H: y$ ~& D2 Z: |1 m( `4 j/ C: p
7 C8 o* J( Z2 F$ w // 配置周期
" U: p/ K- |8 ^; e( k# K2 O& q6 \/ O timerParams.period = Period;
2 h6 O; V$ h8 c& d/ J0 T timerParams.periodType = Timer_PeriodType_MICROSECS;
( {8 F' T: a& q
3 m/ G( U0 [7 N9 j // 实例化定时器
% b8 K {/ g- T. q Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
' a4 c# b' Q n, { if(Timer2 == NULL)
! `' V- j L9 g! m! n# o5 \ {
6 W- X( ^9 S# H- l( { LOG_INFO("Timer2 not start。。。。");
) k$ U: l9 N3 _) |" O- B }
7 J% b3 l7 m' _# I7 C, v
* x- f3 h2 T) i( U4 w" d Timer_start(Timer2);! ?+ P* X3 J/ B" B" ?0 C8 f
+ h! s& m6 D6 [5 J o LOG_INFO("Timer2 start。。。。");9 G( U& B+ D" P, K
0 j* b0 v" @3 y o8 P. c: Q4 C ad->is_running = true;5 a, S2 S0 k% o# U
}. G6 g' h9 Y# o$ c" z6 L& m
; E! P4 q h& }+ d) y' d
|
|