sleep.c

来自「在AVR 平台下的控制代码,通过CAN控制」· C语言 代码 · 共 48 行

C
48
字号
#include "std.h"
#include "sleep.h"
void tdSleep(Word wMilliseconds)
{
    Dword t;
    t = tdGetTickCount();
    while (!tdCompareTickCount(t, wMilliseconds));
}

 Bool tdCompareTickCount(Dword dwOriginalTickCount, Word wInterval)
{                                                              
    Dword t;
    
    t = tdGetTickCount();
    
    if (t - wInterval > t)
    {  // overflowed                               
        if (t + 1 + ~dwOriginalTickCount >= wInterval)
            return _TRUE_;
        else
            return _FALSE_;
        
    } else
    {   
        if (t >= dwOriginalTickCount)
        {
            if (t - wInterval >= dwOriginalTickCount)
                return _TRUE_;
            else
                return _FALSE_;
        } else
            return _TRUE_;
    }
    
}

/* set the value in ISR */
Dword t_dwTimerCount;
Dword tdGetTickCount(void)
{                        

    Dword t;
//    _DI();
    t = t_dwTimerCount;
//    _EI();
    return t;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?