|
您好:+ J3 W7 P, L. Y5 }* X ^" z
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?' h; B) I, S1 p% N+ n1 E
; ?! b6 R5 U/ Y4 n' x, u! d) L
# I- \& A5 c( L0 A, s) W, e3 M ` [! r
6 {7 V0 L T, j1 F8 O: C* E( ^& {1 X! p; C
void ad7606_start(ad7606 *ad, unsigned int rate) {9 F# W5 |4 T$ j, k o; {6 }6 C) Z* v7 P
// ASSERT(ad);
4 e/ w9 {. ^2 E2 t; M- `0 x# L// if (rate > 1000000 / TICK_PERIOD) {
% H5 [$ e2 x0 q! {// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
5 C1 p/ ^/ { F( `+ S/ b// rate = 1000000 / TICK_PERIOD;
7 n) d0 }+ L$ I+ X8 ?// }
& C% ?, r7 t+ ]4 d//- r1 T3 S3 ~- s" \1 U" E
//
; u$ k2 h6 h4 B. R4 Q- l: P// int period = 1000000 / TICK_PERIOD / rate;" Q$ O; a9 c) K. a7 p
//
F t. e" a* l' a, h, c// if (! ad->is_running) {. N4 B/ b) A/ r$ k5 A$ ~7 c8 t
// Error_Block eb;
1 j% o8 m% o0 @9 a) D9 G9 o// Error_init(&eb);4 H3 ~7 E6 d4 x( D$ n/ ^
//
- ^( f$ z+ F/ J% X Z& S// Clock_Params params;4 k, ]9 b5 p4 X8 s4 h
// Clock_Params_init(¶ms);
' B o+ S8 u. `1 p# `// params.period = period;
8 k! P# E1 M+ N0 B8 q! c// params.arg = (unsigned int)ad;
( Y! S$ T+ ?1 m2 l( }& s. u$ o8 n- Q// params.startFlag = TRUE;
" M# }) i! w! n// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);, r% t- a3 ]) W1 G
// if (ad->clock == NULL)4 p9 H% S* ]+ i
// LOG_FATAL("failed to create clock");
* w- j7 v/ @# _, l3 T: U* K& T//
! f: G# M' k: o: L* C. @0 ^, f// Clock_start(ad->clock);
$ ] u8 k3 z' }! c# v4 q' N, G// }. S/ O* D D$ y3 T% I
// else {
% `, z/ A) n$ W P# E( _// Clock_stop(ad->clock);# ^- B2 ?5 a" I4 }! Y& y5 P
// Clock_setPeriod(ad->clock, period);7 z. P5 `" j- ]$ s, H6 A; T
// Clock_start(ad->clock);
t# v$ b0 Y, i+ W4 O0 e+ F// }1 r' S; }1 p6 `" q* ^6 A
2 U5 H5 \6 a: G* w' R# p; t // 创建定时器
$ R0 a/ p: |* _/ F+ M' O Timer_Params timerParams;
7 X# b; e2 S6 g" H7 N Error_Block eb;
6 Z5 A, v5 @* p6 `* B7 @! e' a% k
6 ~- I. ]2 {3 c4 o$ k // 初始化错误块) o ^9 v) m2 {9 P! A/ a) ?
Error_init(&eb);+ \& W: W. j9 \. l6 ^0 a9 p* C* x
// 初始化参数
8 p2 Q i4 R: ?9 I! O Timer_Params_init(&timerParams);
' E4 @# z( w' z! W' K1 B
; _1 A& Q- ]2 m* ` // 配置周期, k! u# o! z: V o e; a# a
timerParams.period = Period;1 p6 o! \4 }3 u7 q/ P' m
timerParams.periodType = Timer_PeriodType_MICROSECS;
- D) ]; B4 O: j" n% @/ a& }) x7 J* V7 @, z1 P
// 实例化定时器 ~. X4 M% F, h) D i4 n3 q% _1 N( F& O4 X
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
0 B9 D1 p1 L5 M8 P' t6 `0 e if(Timer2 == NULL)1 S1 U4 W- [! [$ m
{6 Q) H' `9 j3 f1 y
LOG_INFO("Timer2 not start。。。。");% \9 o# _+ a( j: s" t; h
}9 h# i* d6 I( v
# ~9 L7 N) j, Q7 n2 f
Timer_start(Timer2);
2 g- K" h& }" k2 c2 R4 q
( S* n( E( u$ |: u LOG_INFO("Timer2 start。。。。");
3 E3 I/ `) |8 R+ J6 q1 ~2 R, e& q) K; Y2 X
ad->is_running = true;& c- C9 C1 l) X' z. ?7 d u! z: l
}
, S4 {! U: j; ]4 {7 G
' {5 e; T- z. m- C! M9 q) z t |
|