打印

定时器怎么实现延时函数

[复制链接]
2727|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
伊晗夕|  楼主 | 2015-5-26 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
309030106| | 2015-5-26 19:59 | 只看该作者
//延时函数,IAR自带,经常使用到
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
//#define CPU_F ((double)32768)   //外部低频晶振32.768KHZ
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

可以试试这个

使用特权

评论回复
板凳
伊晗夕|  楼主 | 2015-5-26 20:45 | 只看该作者
309030106 发表于 2015-5-26 19:59
//延时函数,IAR自带,经常使用到
#define CPU_F ((double)8000000)   //外部高频晶振8MHZ
//#define CPU_F ...

这个的时钟是自己配置的?我用的芯片是TI的F28035,它的系统时钟是60MHz。你提供的方法我不是很懂

使用特权

评论回复
地板
yiyigirl2014| | 2015-5-26 20:53 | 只看该作者
看CCS自带的例程,里面有例程的。

使用特权

评论回复
5
玛尼玛尼哄| | 2015-5-31 10:57 | 只看该作者
定时器里面计数,延时函数判断定时器里面的计数变量

使用特权

评论回复
6
gaoyang9992006| | 2015-5-31 20:53 | 只看该作者
在定时器中断里做好全局变量的更新,在外部延时函数对该全局变量做判断。

使用特权

评论回复
7
hnkf118| | 2015-5-31 23:46 | 只看该作者

void sleep (u16_t ms)
{
    u16_t cur_cnt;


    if ( ms != 0 ) {                              // 时间不为0?
        cur_cnt    = CpuMsTicks;                  // 获取当前TICKS数
        while ( (CpuMsTicks - cur_cnt) < ms) {    // 等待时间到来
            _idle_();                             // 休眠
        }
    } else {
        _idle_();                                 // 休眠
    }
}


// 1MS中断
void TX_Handler (void)
{
    CpuMsTicks++;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝