|
|
您好:
) n5 Q/ V$ W9 c; |) h! | omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?/ \6 H" N+ ?* _( Y
8 O6 Q: U9 L! d6 N* c/ f/ f
: y+ s; A4 X- b; ^. _0 Y# B. X+ @
5 x) ~% P5 O2 i. G5 J
8 u6 ~. J' _/ t0 ^3 k' U3 K. F2 e
" E( \! t) S5 o
void ad7606_start(ad7606 *ad, unsigned int rate) {+ Z% D% e2 \' V7 m
// ASSERT(ad);
' U' c7 g1 S `- x0 T9 e// if (rate > 1000000 / TICK_PERIOD) {
/ o* [) v$ H, n// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
% E# U% a; t* Y// rate = 1000000 / TICK_PERIOD;! y0 r7 r. N/ [! n2 h; z, ?: ^+ b
// }
& B$ v$ k; g# k4 e) w//
^% ^% k" G; m) n0 l k//
" \8 T$ K+ K0 [2 `& O; ~, b// int period = 1000000 / TICK_PERIOD / rate;5 H \2 ]& {$ q, f; A# p
//
$ w% ^/ d! d; s* K' B6 {// if (! ad->is_running) {
9 i2 C. S/ O5 m# v- b// Error_Block eb; `3 I: ]" G" ]& Q
// Error_init(&eb);
- C& f+ x% ]$ `; k8 p4 ~//) C+ |. W# N2 ~7 i* ?8 d- |& L
// Clock_Params params;
8 R; t( J& q& ^ K# C// Clock_Params_init(¶ms);
/ y4 w# G; ]0 i) Z+ W// params.period = period;
$ @" W# f/ ~4 g' e4 C' q// params.arg = (unsigned int)ad;' c4 H2 g% S% @6 `7 l) I* w9 h3 R
// params.startFlag = TRUE; l, [) s/ g9 A* m- T7 ~* @7 M
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
7 a7 R5 r6 n; G5 p1 L4 e// if (ad->clock == NULL)
) q' Z; `% C( q) Y# q// LOG_FATAL("failed to create clock");
' Z* @' J, j# E4 g! ^//
% K0 [; s" ]0 p% J% a// Clock_start(ad->clock);
" G% Q {9 R+ I% M. j( b, P// }
3 O$ W8 h4 j* o2 @3 }2 V// else {1 [$ w9 P( N! z
// Clock_stop(ad->clock);5 W* w( ~1 m% M# ~ H' Z) s9 S
// Clock_setPeriod(ad->clock, period);/ W# o, P- M3 l R5 ?
// Clock_start(ad->clock);
) J( T' u, G+ S9 ?% u// } k O ~' g- E- ?
0 J5 k5 K8 h2 g5 Y: X" H6 T
// 创建定时器. @, E* a) g! N; F/ z
Timer_Params timerParams;6 {, E6 S/ j1 t- f1 R8 S) Z
Error_Block eb;
4 M7 _6 M9 z5 y& j- R+ `0 s7 O0 q3 g
// 初始化错误块
# S; m/ g' _5 \5 b* S: _4 t% V Error_init(&eb);
( P9 u6 `1 ~4 X& G% @1 }$ m // 初始化参数5 @% X+ }- i& V. ?; n1 T! r/ K' _
Timer_Params_init(&timerParams);( o( t2 q& i& l
0 Q6 C; m4 b8 {
// 配置周期* S1 s! \, Y6 L6 O( D+ n* e7 P. i
timerParams.period = Period;
" T0 Q) f' L: P' F* R. I5 U timerParams.periodType = Timer_PeriodType_MICROSECS;4 v$ W% F8 `9 U$ j
! K/ H5 C/ g: N# t6 h1 K" k3 d // 实例化定时器/ u+ o# v6 V# K$ ^; [. ~
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
& R7 R6 C" l3 q; W# a, O; x8 h0 ? if(Timer2 == NULL)) j4 Z; M( \, ]2 N x! m
{
" j b$ Y' |: ^7 O' p+ @! C0 F: Y n, F LOG_INFO("Timer2 not start。。。。");
^8 I- x+ n; Q8 l7 M }
. W$ V5 |2 D* l0 s* }! O& L: u, q+ y5 v y8 e/ v) ^7 V
Timer_start(Timer2);
0 v3 M5 [9 p- I L8 _4 s% @% z. U4 v
LOG_INFO("Timer2 start。。。。");
3 A# f1 Y; u% y. b4 X9 Z. n7 d6 e+ @1 c! h& d
ad->is_running = true;
+ e2 l# ~' F5 |0 r E}( u6 t, n3 {- m3 @" }
8 ]; P; ]( a$ ~8 v6 {: t
|
|