OpenEdv-开源电子网

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

stm32加上delay_ms函数执行不过去

[复制链接]

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
发表于 2014-7-12 15:32:30 | 显示全部楼层 |阅读模式
5金钱
问题是这样的,我在代码中调用delay_ms(5);或者是delay_ms(5);
可是在debug模式下单步运行总是不能执行过去,代码就停在while(temp&0x01&&!(temp&(1<<16)));//等待时间到达
请问这是怎么回事,本人对于这块不懂,请大神们指点!
谢谢
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-12 15:42:02 | 显示全部楼层
求帮助啊,出了这个问题,程序都没法调试
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-12 16:55:25 | 显示全部楼层
小弟这半个月一直在调液晶240128,除了把光标闪烁调出来,什么都出不来,现在怀疑是延时不够,用系统延时delay_ms(5)又没法单步,单步总是执行不过去,求求各位解决一下
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-7-12 20:29:29 | 显示全部楼层
你用的是原子哥的延时函数么?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2014-7-12 20:49:55 | 显示全部楼层
那用F10跳过吧
于20150522停用该账号:http://www.microstar.club
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-12 23:52:55 | 显示全部楼层
delay之后,设置一个断点,直接运行到断点处。试试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2013-4-18
在线时间
0 小时
发表于 2014-7-13 15:51:20 | 显示全部楼层
如果是一个中断就在该函数行设置断点,如果不是就直接跳过这个函数
肚子饿死了、、、
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-14 14:34:30 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
delay之后加断点可以执行的过去,谢谢原子哥。
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-14 14:35:21 | 显示全部楼层
回复【4楼】Badu_Space:
---------------------------------
是原子哥的延时函数
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-14 14:36:41 | 显示全部楼层
回复【5楼】styleno1:
---------------------------------
F10是step over,也一样
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-14 14:37:53 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
如果函数中嵌套的delay函数比较多,还是执行不过过去,可是delay的时间加起来也就不到500ms
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-14 17:18:47 | 显示全部楼层
回复【11楼】superayr:
---------------------------------
你直接设置断点,运行到断点处,等待就是了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-14 18:17:16 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
我试验过,如果delay_ms(1000);
那在单步运行的时候,在delay后面设置断点,等待的时间远远长于1000ms,有时候等好几秒它都运行不过去。
这个delay函数在单步的时候,是不是等待的时间要比连续运行时间长?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-14 22:56:09 | 显示全部楼层
回复【13楼】superayr:
---------------------------------
全速运行呢?
正常么?
你单独写个代码,测试下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-17 00:04:01 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
ok了。
原子哥,还有一个问题,我用stm32控制240128液晶,总是出乱码,人家液晶厂商的工程师说stm32主频太高,
让我加延时。为了和液晶电平吻合,我还使用了74LVC4245逻辑电平转换芯片。我把stm32降频到24MHz,加延时有很多问题。他们说一般用51,或者主频低一点的。
我现在的需求是,需要从DSP的串口里读数,然后在240128液晶上画上坐标轴,并画图。我考虑过51,可是貌似不能硬件仿真,有些能硬件仿真,可是要占用串口,我知道的51核的都是只有一个串口比如ADUC845,这个串口我要从DSP里接收数据啊。
小弟恳请您指点一二
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-17 23:31:37 | 显示全部楼层
你在操作的时候,加延时,应该就正常才对,你问问他们工程师加了延时还不对是怎么回事?
加延时后,和51一样了...
他们有没有51的demo板?可以给你测试下?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-18 09:18:30 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
您是说用51的单片机试一试我代码里这些控制指令是否正确?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-18 23:06:05 | 显示全部楼层
回复【17楼】superayr:
---------------------------------
不是
我说用51的板子试试你这个液晶是不是好的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-19 09:27:09 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
谢谢您,这个液晶是好的,我前几天还在柜台试呢,现在拿M3控制,已经能显示ASCII了,就是显示的位置不对
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-19 23:31:57 | 显示全部楼层
回复【19楼】superayr:
---------------------------------
额,成功一半了,呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

142

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
230
金钱
230
注册时间
2013-6-27
在线时间
0 小时
 楼主| 发表于 2014-7-20 20:48:23 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
是啊,头一次调液晶,以前只用51调过1602。现在这个240128比那个复杂多了
回复

使用道具 举报

9

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-8-11
在线时间
0 小时
发表于 2014-8-15 10:10:21 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
试过了,还是出不来
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-15 23:20:51 | 显示全部楼层
回复【22楼】zhanjian32:
---------------------------------
慢慢调试了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

9

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-8-11
在线时间
0 小时
发表于 2014-8-16 09:31:08 | 显示全部楼层
回复【11楼】superayr:
---------------------------------
函数需要初始化,位置还要放对,放在结构体定以后面,c语言中有介绍的吧
回复

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-7-26
在线时间
1 小时
发表于 2015-1-1 11:28:47 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,我现在也出现了这个问题,在delay后面设置断点,但还是不能跳出来,请问这是什么问题呢?
回复

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-7-26
在线时间
1 小时
发表于 2015-1-1 11:30:06 | 显示全部楼层
回复【13楼】superayr:
---------------------------------
你好,我现在也出现了这种跳不出的问题,请问你当时是怎么弄的呢?
回复

使用道具 举报

14

主题

97

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2014-12-16
在线时间
10 小时
发表于 2015-1-1 13:22:41 | 显示全部楼层
回复【26楼】HZ26:
---------------------------------
是否执行了delay_init()
回复

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-7-26
在线时间
1 小时
发表于 2015-1-1 22:31:52 | 显示全部楼层
回复【27楼】prettywolf:
---------------------------------
恩,其实delay一开始可以执行过去的,后面突然就不行了,然后程序就死在这里面了
回复

使用道具 举报

14

主题

97

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2014-12-16
在线时间
10 小时
发表于 2015-1-3 09:41:18 | 显示全部楼层
回复【28楼】HZ26:
---------------------------------
我也遇到过这问题,
原因是使用delay_ms之前没有调用delay_init,看你的情况好像不同。
回复

使用道具 举报

5

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2014-7-26
在线时间
1 小时
发表于 2015-1-3 10:49:25 | 显示全部楼层
回复【29楼】prettywolf:
---------------------------------
恩恩,我最开始就调用delay_init了,但是有时delay就是跳不出,总是卡死在里面
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-4-24
在线时间
0 小时
发表于 2015-4-24 16:55:11 | 显示全部楼层
回复【23楼】正点原子:
---------------------------------
原子哥  我这段程序里面的delay_ms(20);为什么起不了延时的作用啊???
#include "delay.h"
#include "sys.h"
#include "pwm.h"
 int main(void)
 {
u16 pwm_value=225;
int dir=1;
SystemInit();
delay_init(72);      //延时初始化
NVIC_Configuration();

TIM3_Init(9000,159);  //PWM频率=72000/9000/150=50hz
while(1)
{
  delay_us(1000);  

pwm_value = pwm_value + dir;
if(pwm_value==1125) break;          
TIM_SetCompare4(TIM3,pwm_value);

}  
delay_ms(2000);//延时2秒
while(1)
{
delay_us(1000);
    pwm_value = pwm_value - dir;
        delay_ms(5);
if(pwm_value==225) break;
TIM_SetCompare4(TIM3,pwm_value);
}
while(1);

 }
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-25 00:00:38 | 显示全部楼层
回复【31楼】jsaf:
---------------------------------
仿真调试代码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2015-8-12
在线时间
0 小时
发表于 2015-9-23 15:54:48 | 显示全部楼层
一些HAREWARE中的.c文件中的函数会调用delay函数,尤其是lcd初始化。要把delay_init(); 放在所有初始化函数之前。并且delay-us,ms()的参数必须为大于等于1的正数
回复

使用道具 举报

10

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2016-1-21
在线时间
30 小时
发表于 2016-1-21 15:37:45 | 显示全部楼层
HZ26 发表于 2015-1-1 22:31
回复【27楼】prettywolf:
---------------------------------
恩,其实delay一开始可以执行过去的,后面突 ...

嗯,我也是这样,一开始已经delay_init()初始化了,运行没问题,delay_us()和delay_ms()也能运行过去,后来就卡在那个do while()循环。设了断点也是跳不过?请问你解决了吗?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 15:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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