OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6691|回复: 12

void delay_xms(u16 nms)进入死循环

[复制链接]

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
发表于 2018-7-18 11:18:39 | 显示全部楼层 |阅读模式
5金钱
程序跑死了,然后用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循环中。


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

169

帖子

0

精华

高级会员

Rank: 4

积分
564
金钱
564
注册时间
2015-7-4
在线时间
105 小时
发表于 2018-7-18 19:37:58 | 显示全部楼层
回复

使用道具 举报

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
 楼主| 发表于 2018-7-19 10:59:10 | 显示全部楼层
chaifuwu 发表于 2018-7-18 19:37
没有初始化delay函数吧

初始化了的。。。肯定初始化啊,死在了延迟中。
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-19 11:29:49 | 显示全部楼层
之前好好的,说明是你后来加了程序才出现了这个问题,在你加的程序上找问题吧
把加的程序注释掉,如果没问题的话,就是新程序有问题了
回复

使用道具 举报

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
 楼主| 发表于 2018-7-20 19:59:08 | 显示全部楼层
qiuzhicheng 发表于 2018-7-19 11:29
之前好好的,说明是你后来加了程序才出现了这个问题,在你加的程序上找问题吧
把加的程序注释掉,如果没问 ...

现在是晶振不起振,重新焊了板子也不起振。
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17753
金钱
17753
注册时间
2018-3-3
在线时间
523 小时
发表于 2018-7-20 20:07:56 | 显示全部楼层
参数不能为0,注意一下
/*
*
*
*
*
*
*/
回复

使用道具 举报

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
 楼主| 发表于 2018-7-23 11:39:51 | 显示全部楼层
Psheng 发表于 2018-7-20 20:07
参数不能为0,注意一下

请问一什么参数,就是delay_ms(100);延迟函数没设置为0
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-23 11:52:26 | 显示全部楼层
ZHOUHAO123 发表于 2018-7-20 19:59
现在是晶振不起振,重新焊了板子也不起振。

那就是你软件的问题啊
回复

使用道具 举报

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
 楼主| 发表于 2018-7-23 14:25:50 | 显示全部楼层
qiuzhicheng 发表于 2018-7-23 11:52
那就是你软件的问题啊

软件问题会导致晶振不起振吗?我那个程序也就是改了改主函数,其余的延迟、RTC都没变
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-23 14:33:35 | 显示全部楼层
会的
1.如果你之前程序能直接用的话,烧进去看看嘛
2.换块板子试试
回复

使用道具 举报

13

主题

65

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2018-6-16
在线时间
31 小时
 楼主| 发表于 2018-7-23 14:40:24 | 显示全部楼层
qiuzhicheng 发表于 2018-7-23 14:33
会的
1.如果你之前程序能直接用的话,烧进去看看嘛
2.换块板子试试

能直接用,烧进去看了一般都是能运行一会儿然后就停住了,重新断电上电才能继续运行。
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-23 15:26:25 | 显示全部楼层
ZHOUHAO123 发表于 2018-7-23 14:40
能直接用,烧进去看了一般都是能运行一会儿然后就停住了,重新断电上电才能继续运行。

我之前也有程序运行一会就卡死的情况,是程序的问题
不知道你之前的程序有没有问题
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-7-23 15:28:02 | 显示全部楼层
ZHOUHAO123 发表于 2018-7-23 14:40
能直接用,烧进去看了一般都是能运行一会儿然后就停住了,重新断电上电才能继续运行。

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-1 02:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表