嵌入式开发者社区
标题:
关于定时器问题
[打印本页]
作者:
vtinf
时间:
2016-11-15 15:17
标题:
关于定时器问题
您好:
( c/ H8 N: C( |; f# C
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,
即用TIMER2取代clock
, 但是却产生不了 ad7606_on_ticked中断。为什么?
9 d P! h* v+ K, p/ \
0 l' @7 `( ?9 w' z$ I( G
6 I3 a! b. E; j0 y
4 P! J# T' W: k( {. T
' P7 j" [+ K0 {
, p9 f# u9 X# K
void ad7606_start(ad7606 *ad, unsigned int rate) {
& e0 q( `0 N, i1 }! D" p+ S
// ASSERT(ad);
6 K& e& K! i( \6 D* W. n
// if (rate > 1000000 / TICK_PERIOD) {
) j5 Q- p9 Z! q
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
6 T A; s) s: Y2 E% I9 _# o* v
// rate = 1000000 / TICK_PERIOD;
0 K, c' }% b9 Y `
// }
- g: O8 }* L$ A: |; c) L, Y
//
4 }, } d1 p* j! Q* F
//
& o3 c1 v0 h, v
// int period = 1000000 / TICK_PERIOD / rate;
# f. t' |9 s. K6 L
//
. ?9 W0 ?( q0 i: K
// if (! ad->is_running) {
+ g& ?) X; j% v! [* P( z% G
// Error_Block eb;
) ~8 D7 J. n* ~4 O0 t5 a/ J
// Error_init(&eb);
& d3 g8 v* ^/ d& M5 N
//
, p; q) _' s& U3 `# x. N
// Clock_Params params;
; p$ Q! T V- n$ |) V( T, x8 y
// Clock_Params_init(¶ms);
7 R" j$ L, C1 w9 o! Z
// params.period = period;
8 [$ y8 I% T0 p* e
// params.arg = (unsigned int)ad;
" p% [4 `2 i9 Z" l O$ x1 ~
// params.startFlag = TRUE;
) q5 _7 U5 J! r g" L$ ^
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
- O2 A! O' v4 u' K) G- x
// if (ad->clock == NULL)
+ E, Z" v' T d
// LOG_FATAL("failed to create clock");
* ^, R) f8 p6 D
//
, u/ p- A6 T. s5 S" ~
// Clock_start(ad->clock);
+ a8 _4 T; U& n& d n
// }
* A3 K- t% e# G8 u
// else {
/ s+ `0 ~8 i5 ?/ C5 H* E- V
// Clock_stop(ad->clock);
2 A" y ^8 k+ q2 ]8 `+ X
// Clock_setPeriod(ad->clock, period);
X: _# V7 N2 v8 \. C; K7 r
// Clock_start(ad->clock);
+ _/ D( `' R) k; \0 S
// }
3 U8 y, P9 I7 C; ]9 V# ^. K
* D7 q8 ^+ I2 K8 X% w P
// 创建定时器
( a0 m! O5 I4 ] W9 n
Timer_Params timerParams;
- ^$ `7 j5 \' B
Error_Block eb;
/ X. b# M: e% T
- @% r9 j# j2 b% T- ^' U/ W5 l
// 初始化错误块
& w- G+ V* n" j; i- U& N
Error_init(&eb);
: g; j) K5 U9 Y4 ]6 Y4 H) V5 V
// 初始化参数
6 a9 C7 n+ h$ u1 b- {
Timer_Params_init(&timerParams);
/ V/ ~3 e1 V- f
+ K: d, q( T8 X) M% w
// 配置周期
( D# R/ t2 H9 W( ~. l( h2 m
timerParams.period = Period;
. N: U/ L7 V/ L/ E6 L5 v( M
timerParams.periodType = Timer_PeriodType_MICROSECS;
& D- Q: V# z5 W
% |8 `7 q% k: D' b0 W
// 实例化定时器
( i- Y* S. n6 }# b d2 ]
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
. y; g i. Q d \% U- G" a: O) \ J) O
if(Timer2 == NULL)
r: d' S3 c) M
{
! v' F6 o% D, l" {
LOG_INFO("Timer2 not start。。。。");
4 I/ t5 N+ W1 B* G& ^
}
k7 X2 \" P2 e* v0 B
3 H2 o! ~3 L" {7 E( c
Timer_start(Timer2);
" f' w" M2 g* K7 {" a. \2 z
: ^3 G6 \' R" A# D
LOG_INFO("Timer2 start。。。。");
0 |( d$ e& F5 m0 {/ }6 g) ?
4 H- a; g+ @" ]" m$ Q
ad->is_running = true;
! [: T, Y/ W' H' A
}
/ [1 }/ w, Z* Q& W r" j/ w o/ M6 s. ~
4 k8 q% Y' g2 p6 D) ?: C
作者:
human
时间:
2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4