微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > Vx中有一个延时函数没看懂

Vx中有一个延时函数没看懂

时间:10-02 整理:3721RD 点击:
for (stop = start = tickGet (); start == stop; start = tickGet ())
                                ; /* wait for clock turn over */
这句是什么意思,在我理解看来就是延迟了几行代码而已?

延时小于等于1个tick。

完整函数如下
void ADT_L0_CALL_CONV ADT_L0_msSleep(ADT_L0_UINT32 msDelay)
{
        static int delayLoop = 0;
        int ix;
        int iy;
        int maxLoop;
        int start;
        int stop;
        int mpt; /* microsecs per tick */
        msDelay = msDelay*1000; /* Convert input to usec*/
        if (delayLoop == 0 || msDelay == 0xffffffff) /* need calibration? Run first time only when delayLoop=0 */
        {
                start = 0;
                stop = 0;
                mpt = (1000 * 1000) / sysClkRateGet (); /* microsecs per tick */
   
                for (delayLoop = 1; delayLoop < 0x1000 && stop == start; delayLoop<<=1)
                {
                        for (stop = start = tickGet (); start == stop; start = tickGet ())
                                ; /* wait for clock turn over */
   
                        ADT_L0_msSleep(mpt/1000); /* single recursion */
                        stop = tickGet ();
                }
                maxLoop = delayLoop / 2; /* loop above overshoots */
                start = 0;
                stop = 0;
                if (delayLoop < 4)
                        delayLoop = 4;
   
                for (delayLoop /= 4; delayLoop<maxLoop && stop == start; delayLoop++)
                {
                        for (stop = start = tickGet (); start == stop; start = tickGet ())
                                ; /* wait for clock turn over */
   
                        ADT_L0_msSleep(mpt/1000); /* single recursion */
                        stop = tickGet ();
                }
        }
        /* Main delay loop after calibration above*/
        for (iy = 0; iy < msDelay; iy++)
        {
                for (ix = 0; ix < delayLoop; ix++);
        }
}

给你踩踩,,,过来瞅瞅。(*^__^*) 嘻嘻……

....

我没学过这玩意,“解析STM32的库函数”要不要看看?还是你已经看过了?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top