|
|
您好:
1 w& r# ~6 l' h+ D; p) B& U omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
& f+ @; r/ |/ `7 {; w+ z P- U8 m
, p! V: f5 ?9 L& m9 @4 E* L. Y' {- u. e8 K
2 U! h1 [% N6 x- R% a* V2 P$ I% F( p' A6 [) i( E
0 j/ n% ~" }: O
void ad7606_start(ad7606 *ad, unsigned int rate) {
2 x' z" v% {- }* o0 x// ASSERT(ad);
~8 K" t- }( C9 A! @ G% t// if (rate > 1000000 / TICK_PERIOD) {
- n- L$ S* x. `' S) R [- B// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);9 c4 E7 O) c) ~
// rate = 1000000 / TICK_PERIOD;
6 Z- b M. u5 m9 N0 L// }
' o- p5 q9 y t+ x- }$ r* A+ `//; {. j% s1 S2 P e( Z
//
3 m0 ^" Y) e+ C( y3 W8 Y T; [// int period = 1000000 / TICK_PERIOD / rate;! ]& }* F0 @/ y3 ~
//
, L; b' q0 o/ w+ K, O+ B// if (! ad->is_running) {
- D' \/ K( W: P. w// Error_Block eb;
" f7 N4 {0 x' ~: n* ?7 T// Error_init(&eb);
( G! c# k! b' _% z//
7 p$ d( i5 X; L( K- I* T* T9 t; v// Clock_Params params;& D' D, k5 d- j3 ^
// Clock_Params_init(¶ms);7 \' i: P, L; E# |& K, T
// params.period = period;+ L- {( R6 u' s3 B. M+ p
// params.arg = (unsigned int)ad;
$ V8 ~9 u/ B- t. e$ c; N// params.startFlag = TRUE;* W5 q9 x9 ^6 j& L5 c2 C
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
5 B, k( ]# @1 T7 w0 e- g9 B2 L% w// if (ad->clock == NULL)
! t+ d) T8 {( _2 A1 A// LOG_FATAL("failed to create clock");3 J0 E6 t- B/ I1 b$ t+ Y0 H" G
//
: d: v6 Y" O2 j; r* o* A// Clock_start(ad->clock);
8 s7 J# A1 T0 E6 `* s, D) J// }: b; J' g* N& s# D( Q! B
// else {" o- [" K/ Y4 l& B% ?
// Clock_stop(ad->clock);% o) n. @$ j7 J! N' X! U
// Clock_setPeriod(ad->clock, period);' h/ |; k# o5 t0 }, W4 D0 @+ p; B
// Clock_start(ad->clock);3 `3 h$ ?. v% s/ R* W
// }
, F; [) {% a) A: H/ c- ?4 Y' {" v7 b8 O. a+ u( }
// 创建定时器" V) k4 m& A. M5 }- ]( A: n& y
Timer_Params timerParams;
2 f& G( z. z" I( s Error_Block eb;4 A1 ?' k4 w/ `/ c& s# I+ {
: z, m, |! Q5 S$ o1 H" [ // 初始化错误块
5 b1 z' G* O4 b. O Error_init(&eb);
( J6 x, U$ x# R" N0 m: E // 初始化参数+ v3 L: a. q2 K6 B6 r
Timer_Params_init(&timerParams);
8 n1 ~- B }. z' ~
. ?# C( u. }9 _0 |* R% f6 E% b // 配置周期$ D3 L. c; Y7 x* u4 z0 p% V
timerParams.period = Period;
# N9 _" {1 }+ g( |1 F8 R2 I$ @ timerParams.periodType = Timer_PeriodType_MICROSECS;2 |$ J& s! h" l$ k( t
1 u7 z2 [! z O5 D# z1 d // 实例化定时器
3 u$ ~- e4 m$ y* g. J; @3 K Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
$ y, Q% I9 X. Y0 ~3 c if(Timer2 == NULL)
4 A3 ?4 K* x2 K( E+ a0 S9 Y {( w- F g; Z3 L F
LOG_INFO("Timer2 not start。。。。");
0 t: c8 w( x8 y, j9 ^! x }& B/ z+ R* q# ]- H0 j
& V! o# T, R9 v# H2 Z
Timer_start(Timer2);
% Y! |, {4 V+ G* m/ v' [1 [8 O2 K$ Q7 x" [
LOG_INFO("Timer2 start。。。。");
: _/ }3 j6 t/ P3 u# d9 X o5 c2 f" P0 @' `: q- _
ad->is_running = true;
! s S Y0 |) e& b; j, i}9 `7 s- \- @$ x" O9 ?
- z# k0 g7 ^& ?( I
|
|