OpenEdv-开源电子网

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

使用ST-Link调试,单步执行时程序在延时函数里面出不来了?

[复制链接]

4

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-3-16
在线时间
3 小时
发表于 2015-6-30 15:07:34 | 显示全部楼层 |阅读模式
5金钱
调试的时候,程序在
do
{
temp=SysTick->CTRL;
}
while((temp&0x01)&&!(temp&(1<<16)));//等待时间到达
SysTick->CTRL=0x00;       //关闭计数器
程序在这个地方停住了,然后单击stop按钮,程序就跳到了STMF103x.s中的256行“B”这一句
以前也经常用原子的延时函数,但从来没出现过这样的问题,求各位大神指点

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-6-30 23:34:38 | 显示全部楼层
说明延时时间没到,直接在外部定义一个断点,然后运行到断点处,试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-3-16
在线时间
3 小时
 楼主| 发表于 2015-7-1 09:21:53 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
还是不行,还是卡在那个延时函数里面了。我延时的是50MS
回复

使用道具 举报

4

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-3-16
在线时间
3 小时
 楼主| 发表于 2015-7-1 14:26:42 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,我看了一下System Tick  Timer一些寄存器的值,其中ST_CURRENT和CURRENT的值是不规律的变化的,
我在do
{
temp=SysTick->CTRL;
}
while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL=0x00;      
我在SysTick->CTRL=0x00; 这一句话设置一个断点,然后run,其余正常的情况下是ST_CURRENT和CURRENT的值变为0,然后跳出do  while循环,而这个不正常的情况则是ST_CURRENT和CURRENT的值不规律的在变化,不变为0,也不跳出do while 循环
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-7-2 21:40:10 | 显示全部楼层
回复【4楼】GUN_xing:
---------------------------------
是不是你这个初始化没搞好啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

4

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2015-3-16
在线时间
3 小时
 楼主| 发表于 2015-7-3 09:54:46 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
不应该啊,我两个程序用的是同一个delay.c文件,有一个程序就没问题。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2015-7-5 23:04:30 | 显示全部楼层
回复【6楼】GUN_xing:
---------------------------------
慢慢调试下吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2016-11-26
在线时间
17 小时
发表于 2017-8-12 01:53:50 | 显示全部楼层
初学者的话建议看一下是不是没初始化,我遇到过这个问题,卡在delay里面,最后检查发现没初始化 delay_init(168);
回复

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-10-23
在线时间
27 小时
发表于 2018-1-26 22:11:53 | 显示全部楼层
我也遇到了,你看一下中断里面有没有用到延时,把延时去掉就好了。  我也不知道为啥
回复

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-6-4
在线时间
15 小时
发表于 2018-10-17 21:49:29 | 显示全部楼层
我也遇到过这种情况,但是我的问题是,在主程序初始化的过程中,先初始化了其他函数,然后再初始化delay_init()函数,但是延时函数之前的那些函数初始化过程中调用了delay_ms()或者delay_us(),这样就导致未初始化延时函数先调用,所以调试的时候会卡在延时函数里。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2019-9-16
在线时间
9 小时
发表于 2019-10-16 16:46:47 | 显示全部楼层
我也遇到这个问题了,也是忘记初始化delay_Init,初始化delay_Init就行了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-7 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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