OpenEdv-开源电子网

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

为什么for(i=0;i<2500;i++);做延时就是不管用呢?

[复制链接]

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-8
在线时间
0 小时
发表于 2014-5-7 15:36:19 | 显示全部楼层 |阅读模式
5金钱
如题,i=2500;while(i){i--;}这样也不行
用别人编写的delay函数也不行,就是不执行,是这个单片机坏了吗?我换了个新的也没用!
~~~~打滚求回复~~~~

最佳答案

查看完整内容[请看2#楼]

首先确定下 你是怎么测试的? 怎么知道没有执行呢? 是没有执行就越过去了,还是卡死在这里了? 编译器 为了节省承训空间和执行时间, 有时候 会把它认为你用不到的变量或 程序段 优化掉。 在 配置 -> c/c++ -> 语言代码生成 -> 改成Level0,  并把在时间上优化 点掉 试下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-5-7 15:36:20 | 显示全部楼层
首先确定下 你是怎么测试的? 怎么知道没有执行呢?

是没有执行就越过去了,还是卡死在这里了?

编译器 为了节省承训空间和执行时间, 有时候 会把它认为你用不到的变量或 程序段 优化掉。
在 配置 -> c/c++ -> 语言代码生成 -> 改成Level0,  并把在时间上优化 点掉 试下
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-5-7 17:09:26 | 显示全部楼层
被 优化掉了
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-5-7 17:09:41 | 显示全部楼层
http://www.openedv.com/posts/list/18279.htm
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-5-7 18:07:45 | 显示全部楼层
你的i的数据类型是多少位的?2500这个数值可能已经爆了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-8
在线时间
0 小时
 楼主| 发表于 2014-5-8 15:31:41 | 显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
int型的,但是我试过200,300两个循环嵌套的也不行。还有就是在调试的时候删掉段代码后发现不行,再ctrl+z回去,再编译一次就全瘫痪了,只能从之前备份的全部拷过来才会正常,但是两份内容都是一样的。是我电脑的问题吗?
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-8
在线时间
0 小时
 楼主| 发表于 2014-5-8 15:32:34 | 显示全部楼层
回复【3楼】aleda303:
---------------------------------
您好,谢谢您提供的代码。但我不知道我这个问题是 什么原因造成的。
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-8
在线时间
0 小时
 楼主| 发表于 2014-5-8 15:33:14 | 显示全部楼层
回复【2楼】aleda303:
---------------------------------
为什么会被优化掉呢?怎么才能不被优化掉?眨眼睛~~
回复

使用道具 举报

5

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2014-4-8
在线时间
0 小时
 楼主| 发表于 2014-5-8 16:41:34 | 显示全部楼层
回复【8楼】aleda303:
---------------------------------
我是想看看让led延时一会儿亮,结果led一上电就亮了。我重新换了个系统,之前测试好的程序都瘫痪了。。。。快崩溃了
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-5-9 09:29:45 | 显示全部楼层
回复【9楼】qrffrq:
---------------------------------
可能是你延时过短。加长时间试试。 

或者是计数器溢出。你确定i 不是 8位的吧

然后那个优化选项改一下, 不让编译器优化。
回复

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-7-21
在线时间
0 小时
发表于 2014-8-6 08:37:43 | 显示全部楼层
就2500太小了吧?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 18:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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