关于程序会在延时函数死循环

2019-07-20 23:36发布

程序莫名的会死在延时函数的死循环中,之前使用的延时函数并没有出现这种情况,想请教大家一下死在延时函数的do {}while;循环会是什么原因,网上只是说延时函数的实现方法但是并没有这方面经验可以借鉴,希望有这方面积累的能给予解答一下
[mw_shl_code=c,true]void delay_xms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;//ʱ¼ä¼ÓÔØ(SysTick->LOADΪ24bit)
        SysTick->VAL =0x00;           //Çå¿Õ¼ÆÊýÆ÷
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //¿ªÊ¼µ¹Êý  
        do
        {
                temp=SysTick->CTRL;
        }
        while((temp&0x01)&&!(temp&(1<<16)));//&#181;&#200;&#180;&#253;&#202;±&#188;&#228;&#181;&#189;&#180;&#239;   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //&#185;&#216;±&#213;&#188;&#198;&#202;&#253;&#198;÷
        SysTick->VAL =0X00;       //&#199;&#229;&#191;&#213;&#188;&#198;&#202;&#253;&#198;÷                      
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。