定时器怎么实现延时函数

2019-07-27 18:30发布

本人是新手。请各位高手指点一下。我所用的芯片是F28035,然后我想用定时器0做一个延时函数,让程序延时200Ms,但是又不想用到中断。因为直接用循环的delay()函数时间不准确,所以想用定时器来实现一个200ms的延时,但是又不用中断。望各位高手不吝赐教!!谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
309030106
1楼-- · 2019-07-27 18:45
//延时函数,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))

可以试试这个
伊晗夕
2楼-- · 2019-07-27 22:39
 精彩回答 2  元偷偷看……
yiyigirl2014
3楼-- · 2019-07-27 23:15
看CCS自带的例程,里面有例程的。
玛尼玛尼哄
4楼-- · 2019-07-28 00:57
定时器里面计数,延时函数判断定时器里面的计数变量
gaoyang9992006
5楼-- · 2019-07-28 01:18
在定时器中断里做好全局变量的更新,在外部延时函数对该全局变量做判断。
hnkf118
6楼-- · 2019-07-28 01:24

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++;
}

一周热门 更多>