嵌入式开发者社区
标题:
关于定时器问题
[打印本页]
作者:
vtinf
时间:
2016-11-15 15:17
标题:
关于定时器问题
您好:
5 b4 d- o }2 t! n& X7 M6 u1 q
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,
即用TIMER2取代clock
, 但是却产生不了 ad7606_on_ticked中断。为什么?
2 S$ G# x$ J0 J" a/ i
3 u; A0 t( l1 a8 Z; L. E5 T; X% B3 c
+ j' D6 O) x6 ]0 t
& W D" z N( J, H$ U, W: u
( a' g+ f4 u8 \) R) p, `" N# G
( B. Y, c$ Y0 }7 N3 X+ U( \% x
void ad7606_start(ad7606 *ad, unsigned int rate) {
. Q* x/ L: `5 W. W
// ASSERT(ad);
! j& a/ {* a/ F4 K/ y( Y& r/ |) n; |! A
// if (rate > 1000000 / TICK_PERIOD) {
% C/ a# k/ D6 G2 d
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
: g& T- s* Q( V% x [ s# I
// rate = 1000000 / TICK_PERIOD;
6 J9 s9 J8 f; K+ k
// }
9 [" ]1 I# w2 _% Y( \8 }8 W
//
* N% [. ? W3 v' q4 k1 v
//
3 F/ M# v. j# O+ u1 C
// int period = 1000000 / TICK_PERIOD / rate;
$ C) z6 {1 q4 p d/ I& U
//
$ y/ W9 c: P( e" @% Q2 \4 G
// if (! ad->is_running) {
, m' T! S- U" Q* a4 Y$ D
// Error_Block eb;
- t t7 [" Y# ~, f' `/ F1 \4 B6 K
// Error_init(&eb);
6 \( c) n9 P: i) e
//
$ h; s9 b& ?, A& `3 s( G" d& D" ?. a
// Clock_Params params;
. f2 m- T6 ]; s7 H; }- S
// Clock_Params_init(¶ms);
) `4 z h# ]1 ~+ j& X
// params.period = period;
0 p; g- `' v l3 F1 Y
// params.arg = (unsigned int)ad;
, n- `" T2 g; {- v" `
// params.startFlag = TRUE;
/ y# R: G* b4 U6 K0 R) }; \
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
0 U. }7 o/ \/ r9 ?
// if (ad->clock == NULL)
8 f8 T& f7 i9 \% B/ U) o/ y# H1 g4 {
// LOG_FATAL("failed to create clock");
6 b* h- j* u& w
//
, i `8 c7 b6 N4 i9 Z; }
// Clock_start(ad->clock);
4 r$ f, U. f9 b7 V& ~8 A! n4 S
// }
% I5 i5 V* |- f2 ~
// else {
2 L! n; O a( x' W: N
// Clock_stop(ad->clock);
5 p& T! D6 V* A' ]$ \; A
// Clock_setPeriod(ad->clock, period);
/ a# n+ E |" R1 w5 k
// Clock_start(ad->clock);
% M, ^, H0 V# a; D
// }
& |3 u2 A, h4 C4 X
) V6 s6 y$ V' I4 h- l S4 ?
// 创建定时器
" z3 J c4 \2 h$ r6 K8 C
Timer_Params timerParams;
9 j1 H! H5 ?, E+ J. H
Error_Block eb;
4 \* U6 e& {6 `$ v
4 v- a o- c3 D8 Q* i( r
// 初始化错误块
" p( N, {# ^ T$ P1 H
Error_init(&eb);
/ _ r7 k3 ]8 s! ]1 X2 P% o9 Z
// 初始化参数
, V# F, N0 L+ Y% o! |5 |: x: d% p
Timer_Params_init(&timerParams);
; ?9 C& y) g, ?9 I; G$ I
3 y0 P: r9 G) Z4 G- O6 {
// 配置周期
- ?9 w9 \& |" [; v7 [" z) B1 E
timerParams.period = Period;
$ d' _ l: w4 ~) ]5 ~' J
timerParams.periodType = Timer_PeriodType_MICROSECS;
$ D* G) a) V9 H8 @5 B! L1 P. `
0 P# a7 R/ X& L8 W; q6 o! ?
// 实例化定时器
- Z1 M* N- r0 Q- W
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
( B. z7 |1 g: E* D( c" M
if(Timer2 == NULL)
" S1 m4 J! a# ]6 _* d5 [+ |$ L" `
{
9 y& j; J4 Z6 z
LOG_INFO("Timer2 not start。。。。");
: y' y4 h* X3 `9 s( q
}
; a; D# i" ?, |
3 y' u% ~1 N3 p; o+ `; \! p* v
Timer_start(Timer2);
l3 v) _* B7 F/ L! c6 X
+ H# Y0 O( R, Q/ g# M: _1 @6 F2 O! B
LOG_INFO("Timer2 start。。。。");
# k6 i4 t' K* Q
3 z4 D' Z; W/ p7 B8 p
ad->is_running = true;
9 T+ E8 w6 N7 g2 V2 V) g
}
! w0 ?# ~- _/ N# N5 b0 _+ \
1 X8 }& ?( Z6 F( { G
作者:
human
时间:
2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4