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循环中。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
qiuzhicheng
1楼-- · 2019-07-20 19:52
ZHOUHAO123 发表于 2018-7-20 19:59
现在是晶振不起振,重新焊了板子也不起振。

那就是你软件的问题啊
ZHOUHAO123
2楼-- · 2019-07-20 21:50
 精彩回答 2  元偷偷看……
qiuzhicheng
3楼-- · 2019-07-21 02:36
 精彩回答 2  元偷偷看……
ZHOUHAO123
4楼-- · 2019-07-21 05:56
qiuzhicheng 发表于 2018-7-23 14:33
会的
1.如果你之前程序能直接用的话,烧进去看看嘛
2.换块板子试试

能直接用,烧进去看了一般都是能运行一会儿然后就停住了,重新断电上电才能继续运行。
qiuzhicheng
5楼-- · 2019-07-21 07:10
 精彩回答 2  元偷偷看……
qiuzhicheng
6楼-- · 2019-07-21 12:13
ZHOUHAO123 发表于 2018-7-23 14:40
能直接用,烧进去看了一般都是能运行一会儿然后就停住了,重新断电上电才能继续运行。

在options=>C/C++=>Preprocessor Symbols里面,你的宏定义是哪几个?

一周热门 更多>