嵌入式开发者社区
标题:
关于定时器问题
[打印本页]
作者:
vtinf
时间:
2016-11-15 15:17
标题:
关于定时器问题
您好:
* C& @+ A* l9 t. O& p- q
omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,
即用TIMER2取代clock
, 但是却产生不了 ad7606_on_ticked中断。为什么?
0 y% k3 i+ q+ N' |# V6 A5 P C+ v
% K. p- Y/ u& B# H
q% L, Q% A3 ~5 J8 H
/ y4 _" S9 b. D5 p! ^( m
( }$ G2 O" i5 F8 e9 F
* t: j/ q) G& @% b! w" C
void ad7606_start(ad7606 *ad, unsigned int rate) {
2 v4 F d2 Y" a
// ASSERT(ad);
3 n3 C3 F' s4 \& B' l
// if (rate > 1000000 / TICK_PERIOD) {
- @+ E5 B3 P& \/ I& y
// LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);
/ V3 W% K5 F& @+ `0 J, P/ Z6 V
// rate = 1000000 / TICK_PERIOD;
9 ~2 ^6 a6 k7 t, `4 [, F& l
// }
+ X9 ~) Q+ o- u/ g9 h% m
//
" [; }; u& U0 T
//
: T$ p" b1 t. l5 |
// int period = 1000000 / TICK_PERIOD / rate;
/ Q7 ]5 W* q) G# G/ A$ T, h9 ~
//
5 q7 C& v) [' R& ?7 `1 [
// if (! ad->is_running) {
4 O& {' \2 Y: Y
// Error_Block eb;
# |* @/ Q" D5 s! A
// Error_init(&eb);
; ` J2 k* O6 o s
//
^: ], k# y* L1 S2 Q
// Clock_Params params;
, F- [9 K. [) S; \( G
// Clock_Params_init(¶ms);
$ X; u$ B- ^# P% r
// params.period = period;
/ n$ ?; `/ W9 v- W6 s, z# H) m' D
// params.arg = (unsigned int)ad;
/ R) Q. d& U( H* B; h
// params.startFlag = TRUE;
* Z2 Q1 |. d6 p7 `: J
// ad->clock = Clock_create(ad7606_on_ticked, period, ¶ms, &eb);
/ I I" E0 u4 s. ]
// if (ad->clock == NULL)
: A* h' @) i8 @& G
// LOG_FATAL("failed to create clock");
0 @* |2 w# i4 _5 l' h
//
) H/ a4 O K% s/ V4 ]
// Clock_start(ad->clock);
& f" Y8 p3 {" n: f' o/ B
// }
r5 U. k% c6 c! W, Q
// else {
8 R4 P& h6 F! }3 T3 G
// Clock_stop(ad->clock);
: S4 d4 k# c% f& U
// Clock_setPeriod(ad->clock, period);
7 w& Y; i; U1 H( E& h, r
// Clock_start(ad->clock);
7 j2 b- F: J+ d8 j; ]8 U) h
// }
( t5 c3 F8 |# m: L
5 q1 q9 k3 N1 Y5 Y: [
// 创建定时器
A' P5 f0 H5 c- F& g7 n% u% Q$ {
Timer_Params timerParams;
2 c2 l0 T* ]/ ^: T4 t" J
Error_Block eb;
* z8 P6 N' a* o% |8 s" {3 O" N
0 y8 \1 B( e! R, B$ p, l) Z' @6 ]
// 初始化错误块
& N9 o/ e. b6 F4 x. U$ O
Error_init(&eb);
n$ p# R( Q& W2 ^
// 初始化参数
- g$ O; C1 W! d% ]8 a% P
Timer_Params_init(&timerParams);
. l8 p3 O' S7 P
! ], l1 W) \* f
// 配置周期
' m# [$ V% D7 h2 ~# N
timerParams.period = Period;
9 l+ T( A& Y: O) Y( o# b8 B
timerParams.periodType = Timer_PeriodType_MICROSECS;
, v2 Q) |& E) ^0 T: X4 m4 ?
' ] o: P; \& Y; M/ x3 b
// 实例化定时器
0 u! ~, z& Z7 K; H; h
Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
! d( F8 v8 \1 C# u3 S
if(Timer2 == NULL)
1 P; T: g- I7 Y6 Z; ~1 T
{
9 Z4 y0 P2 T9 C& Z) ^8 H/ D
LOG_INFO("Timer2 not start。。。。");
6 T# T% q; q# b# ], A% S. Q
}
9 M. g2 x" c/ o
" [$ }3 S8 ^7 ~* x
Timer_start(Timer2);
" X* q9 U4 F+ ~5 |! Q/ x* A, W
% Q0 c& g" b, x# N* e2 t
LOG_INFO("Timer2 start。。。。");
( i9 H* k7 u9 y& J/ q7 ^5 F
; M( z3 }, H( B9 s5 z" r
ad->is_running = true;
" F+ m" o+ E8 I, Y4 i M
}
5 T8 I% m/ y% m0 m" @5 n% _$ Z, _
* E* l% U2 I9 ?3 A4 Z
作者:
human
时间:
2016-11-16 20:13
您调试看了是卡在什么地方?是不是进中断的条件没满足?
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4