void delay_xms(u16 nms)进入死循环

2019-07-20 07:07发布

程序跑死了,然后用ST-Link进行调试,发现程序死在了delay_xms()中,请问这是怎么回事,之前好好的。void delay_xms(u16 nms){                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;                        //ê±¼ä¼óÔØ(SysTick->LOADÎa24bit)
        SysTick->VAL =0x00;                                   //Çå¿Õ¼ÆêyÆ÷
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //¿aê¼μ1êy
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));        //μè′yê±&#188;&#228;μ&#189;′&#239;   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //1&#216;±&#213;&#188;&#198;êy&#198;÷
        SysTick->VAL =0X00;                                       //&#199;&#229;&#191;&#213;&#188;&#198;êy&#198;÷                      
}

死在了do---while循环中。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。