关于定时器问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3668|回复: 1
打印 上一主题 下一主题

关于定时器问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-11-15 15:17:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
您好:
, v$ A4 `: y( a  M6 Z+ I4 {! _1 E       omapl138光盘demo中的ad7606_dsp程序函数void ad7606_start(ad7606 *ad, unsigned int rate) 做了如下修改,即用TIMER2取代clock, 但是却产生不了 ad7606_on_ticked中断。为什么?
' P# Y  b9 P; R1 d3 ]  l* L  Q" w9 f' R8 i, F. }$ ~+ o

$ W: @# ?% S7 H8 f" J/ Z' S, F( |2 A' I% K: o/ u
* I9 N; p6 S+ C% L
$ \- R) ?6 t; S! V+ m& J/ T. a
void ad7606_start(ad7606 *ad, unsigned int rate) {
# j2 z7 N8 x5 X% F/ Z6 t//    ASSERT(ad);
& D2 {" `4 l3 [4 `5 p//    if (rate > 1000000 / TICK_PERIOD) {
4 F' {  ^" q0 N& K2 ?//        LOG_WARN("unstatisfied sample rate, set as max %d", 1000000 / TICK_PERIOD);/ B1 G1 k3 _) v- H9 e6 Q
//        rate = 1000000 / TICK_PERIOD;8 R1 Z+ U0 o- ~6 V  K# I
//    }( o& d' ]) k; ]3 |1 h% ~. V
//+ U$ o, ?  `; c: ^
//
$ R! U7 Q6 e3 }3 R2 I6 s  S//    int period = 1000000 / TICK_PERIOD / rate;
" r. s! W7 o1 L6 q/ U! I) S) g  {' K//
/ R5 i* i. }+ t$ N, p! q//    if (! ad->is_running) {
9 F" ?7 r$ Y" G% q. ^5 e//        Error_Block eb;
% W4 U' \( o, w/ [8 p5 [% [: D//        Error_init(&eb);
4 [/ h1 e; f2 L//5 f7 r1 J5 I( {% _: a; G1 F
//        Clock_Params params;
" U% P( a3 w9 V  J3 w8 _  M8 e" p//        Clock_Params_init(&params);/ _$ ~6 e8 l( O- f; K
//        params.period = period;5 o$ u# ~0 A/ K% K, Y1 i8 p$ A
//        params.arg = (unsigned int)ad;) v, x) ~; }* D8 L) x0 Y
//        params.startFlag = TRUE;
) C* ^0 T; J# f' O8 m9 x//        ad->clock = Clock_create(ad7606_on_ticked, period, &params, &eb);
$ e- O7 ?8 R5 z% x- f# G0 [//        if (ad->clock == NULL)  _4 p$ s: `4 D" g/ r' o  X
//            LOG_FATAL("failed to create clock");5 \, C7 E$ w; V' D8 ^0 Z/ n5 P
//7 [: r* J- b, f2 ?
//        Clock_start(ad->clock);9 r0 K- q  Q5 a9 e
//    }
# J1 K; E- p5 T2 D//    else {) o& H& T% T1 F2 j# Q9 m9 A
//        Clock_stop(ad->clock);$ V% p% Z9 R( i) P/ `6 a8 C* u
//        Clock_setPeriod(ad->clock, period);: O5 |" s# l- y& g$ S
//        Clock_start(ad->clock);3 L4 t8 k% t3 S* P2 c
//    }/ O8 g$ X9 ^- v7 |) S
8 B) g! m5 g8 f4 a" v+ v
         // 创建定时器
/ q) t& q( D" }" g# u            Timer_Params timerParams;
* U2 E$ u. _( ^7 t            Error_Block eb;
, D, c/ R/ X8 _- |5 N, {4 _0 i7 v; H. w( |
            // 初始化错误块! M+ h+ s5 z5 ^6 j+ d
            Error_init(&eb);# C+ b; X8 q0 b; b: c
            // 初始化参数! y2 L, h# |, `2 B* P4 g
            Timer_Params_init(&timerParams);
" `! s4 k0 z4 D; e/ H9 Y) _2 S7 ]* {2 B- Q& l# z# i
            // 配置周期
1 ~4 z) r2 V* u            timerParams.period = Period;6 e( A' [( z7 f0 X. {
            timerParams.periodType = Timer_PeriodType_MICROSECS;
0 \% Z/ P! }: V% d- b. G7 g8 w& V
- ?" \0 P; g, Y' W4 K2 o            // 实例化定时器' L/ c- f, R# A$ r4 Z/ {3 G
            Timer2 = Timer_create(2, ad7606_on_ticked, &timerParams, &eb);
" ]6 O+ Y# ]/ C0 }& F            if(Timer2 == NULL)
* t: p1 m0 Q" z0 |; T' C) L3 ^6 v            {
! l# f9 H3 I; B" t" s                    LOG_INFO("Timer2  not start。。。。");
0 n( ]+ @$ V  U+ t. A            }
4 E$ r: C% Z! A- Q  D- i
* }! S& j" h5 N0 e4 a# F            Timer_start(Timer2);
+ ?+ G" d' f8 @; ~, q) m' K, ~2 c
- t' M4 v' H6 u. s) s. ]            LOG_INFO("Timer2 start。。。。");! m: q8 g) `. M+ a; O

* M* C. B8 t4 o- Y, Z    ad->is_running = true;
& j- R2 Z. K7 x& X3 |% `' t! Y& q; j}9 o9 s: I+ l. p& L: i8 y6 l
1 E) h  O8 v# f3 v3 R: Y9 s3 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

3

主题

852

帖子

3538

积分

创龙

Rank: 8Rank: 8

积分
3538
沙发
发表于 2016-11-16 20:13:46 | 只看该作者
您调试看了是卡在什么地方?是不是进中断的条件没满足?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-10-16 18:01 , Processed in 0.042589 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表