嵌入式开发者社区
标题:
关于定时器问题
[打印本页]
作者:
vtinf
时间:
2016-11-15 15:17
标题:
关于定时器问题
您好:
" K$ A# I7 B+ J- x2 z/ C: H1 P8 Z
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,
即用TIMER2取代clock
, 但是却产生不了 ad7606_on_ticked中断。为什么?
( ]3 ~, S% o9 Q6 ]# M
7 u4 U) `/ a8 `5 o' y
! ]" V; h6 f: K! J1 W+ E, x0 N8 w7 i
7 e6 T" _, G ?* F7 K& X8 Z
, {8 L8 X: ~% k5 [2 h
H' ], Z( T* c3 K/ T: \
void ad7606_start(ad7606 *ad, unsigned int rate) {
) S- E6 M$ X) ^+ O
// ASSERT(ad);
- [8 I0 w' Q6 B5 e9 _) ^ G
// if (rate > 1000000 / TICK_PERIOD) {
( n) G; a5 G6 Q+ R
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: k/ Y. p9 O0 ]2 F
// rate = 1000000 / TICK_PERIOD;
; r1 n1 \/ w. ^8 y p- y3 _4 {
// }
6 Q) N' N; | N2 K+ J% V
//
* N9 F0 p Y$ Z% z
//
9 u: J# a# Q7 q
// int period = 1000000 / TICK_PERIOD / rate;
! F- i3 c( @/ X; {. I, j
//
- U6 p7 h8 Q' L
// if (! ad->is_running) {
: C& |, |# Z; R2 i Z9 f( a
// Error_Block eb;
/ |! i7 n7 M: s, R8 e! u9 o1 e
// Error_init(&eb);
) W* M- O) b6 m5 {; X6 r. W
//
( m1 I% r* ]+ V8 E& `
// Clock_Params params;
) X3 j) O; ~! t' r! e
// Clock_Params_init(¶ms);
Y& a/ w& ]+ f. ?* s: C! |9 N
// params.period = period;
# U2 f f9 W" J/ ~, |& Q% w
// params.arg = (unsigned int)ad;
5 l3 m1 Z8 }0 K
// params.startFlag = TRUE;
5 j' U# y* z$ b( \6 R, _
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
9 q3 l6 H! Z( ~" k
// if (ad->clock == NULL)
& \6 M, ?9 y% A6 u
// LOG_FATAL("failed to create clock");
9 N) O% N* k% m4 i0 z
//
) q& N B I' O; X
// Clock_start(ad->clock);
z0 C# \# R# S& g
// }
* o1 G! b! p6 l! Y5 t* ~
// else {
) |& \0 T' \3 C
// Clock_stop(ad->clock);
5 t) G" A& B9 D
// Clock_setPeriod(ad->clock, period);
& m! j V) k; B4 V( c
// Clock_start(ad->clock);
+ M# n' @. b) a8 U; y
// }
6 Q# Z1 ]# |& v3 A% h4 w# `! B
% Q) [6 C* {" y8 n1 Y
// 创建定时器
/ k/ g5 T/ i- Q9 c4 h% G9 S- Z+ e
Timer_Params timerParams;
% b6 A! U9 G( q2 P0 Q
Error_Block eb;
' O% f4 K! r$ e* [: H+ J. q
6 a( r G; ]# ^- ]( h
// 初始化错误块
; E; H$ m( E1 A
Error_init(&eb);
, i) c* Z% I8 q5 A5 O
// 初始化参数
1 U4 `( x% U. R8 A
Timer_Params_init(&timerParams);
& s$ w9 O; Z$ Q; g2 }; Y- e+ W
* w6 e' y3 Z# @# u6 H4 ?
// 配置周期
$ ?) D; f" P/ N
timerParams.period = Period;
. R7 {! e) H" C7 h# K" r/ V
timerParams.periodType = Timer_PeriodType_MICROSECS;
$ G7 J2 l* t8 c$ J! {8 e
3 ?0 K0 i7 s/ U* U4 l
// 实例化定时器
$ n X3 R/ c( Y! |
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
: X7 I8 @* z; A. Y: }# y
if(Timer2 == NULL)
3 h1 i& l+ E* L$ s) k4 \4 Z2 z: U
{
' ^4 e9 V7 C9 z$ e4 d
LOG_INFO("Timer2 not start。。。。");
0 c5 W: x! V! G+ [& Q
}
! n( @4 q6 R* \
' q+ R8 |2 H8 [" I3 t% Z M/ O
Timer_start(Timer2);
" M: U/ w8 P: G7 ?
! S/ H/ j6 E! f- o
LOG_INFO("Timer2 start。。。。");
# S$ ~1 m( s" p$ s0 v
9 n5 L' O# u) @: Y8 q
ad->is_running = true;
& @4 Y4 e9 P4 J8 j7 l
}
7 Y8 ]$ B) E3 r$ ~
# _- R) J( E4 l9 G$ S3 E
作者:
human
时间:
2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4