搜索
bottom↓
回复: 20

keil4 MDK运行程序始终无法run to main()????求高人指点啊!!!...

[复制链接]

出0入0汤圆

发表于 2012-10-16 16:49:35 | 显示全部楼层 |阅读模式
Keil uVision4里面写的程序,编译下载都可以通过,但是在软件里调试运行后指针总是停在startup_stm32f10x_md.s文件里面
如图:

一开始还可以单步,运行到 "BX R0"这一行就没办法停下来了,请问这是什么情况啊???

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入4汤圆

发表于 2012-10-16 16:53:10 | 显示全部楼层
基本是进入了 NMI 中断了。

出0入0汤圆

发表于 2012-10-16 17:05:09 | 显示全部楼层
没办法停下来?是什么个情况???

出0入0汤圆

 楼主| 发表于 2012-10-17 09:13:49 | 显示全部楼层
acmilannast 发表于 2012-10-16 16:53
基本是进入了 NMI 中断了。

程序DEBUG后就是直接指在那个位置的,就是我图中的那个位置,我都还没运行怎么就进中断了???

出0入0汤圆

发表于 2012-10-17 10:28:43 | 显示全部楼层
我也遇到过这种情况,我把printf函数去掉后就好了,具体原因没有找到

出0入0汤圆

 楼主| 发表于 2012-10-17 13:04:21 | 显示全部楼层
zhangyb 发表于 2012-10-17 10:28
我也遇到过这种情况,我把printf函数去掉后就好了,具体原因没有找到

刚刚试过,删除也不行……

出0入0汤圆

发表于 2012-10-17 13:57:34 | 显示全部楼层
那就不知道,一点一点增加内容,慢慢调试吧!!!

出0入0汤圆

发表于 2012-10-17 14:50:26 | 显示全部楼层
eddly 发表于 2012-10-17 13:04
刚刚试过,删除也不行……

楼主说的是第一次debug时PC指在main出,执行过一遍以后,按reset,PC指向启动文件楼主图片所示的位置,在main出设置断点可以运行到main处

出0入0汤圆

发表于 2012-10-17 14:54:13 | 显示全部楼层
遇到过,没有深思

同求解

出0入0汤圆

发表于 2012-10-17 15:04:30 | 显示全部楼层
事实证明,执行reset命令以后就是指向SystemInit (void);
/* Reset the RCC clock configuration to the default reset state(for debug purpose) */

出0入0汤圆

发表于 2012-10-17 15:05:54 | 显示全部楼层
好像在调试那个标签页下面有个设置选择直接进入main()

出0入0汤圆

 楼主| 发表于 2012-10-17 15:07:21 | 显示全部楼层
fjian 发表于 2012-10-17 14:50
楼主说的是第一次debug时PC指在main出,执行过一遍以后,按reset,PC指向启动文件楼主图片所示的位置,在 ...

情况是这样的:

在debug设置里面勾选run to main()的话,第一次debug是如下图

如果不勾选"run to main()"的话,debug就是直接到上面我发的图片状态(pc指向启动文件);
设置断点没试过,我可以先试一下看

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-17 17:29:17 | 显示全部楼层
我也遇到过这种情况,不要引用stdio.h string.h  把printf函数去掉后就好了,应该是编译器为C运行建立环境时出了错误

出0入0汤圆

发表于 2012-10-17 22:48:45 | 显示全部楼层
是不是微库的问题,网上有很多人遇到同样的问题

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-10-18 09:13:57 | 显示全部楼层
是不是没有定义SystemInit()这个函数,把你的System_Init()改成SystemInit(),SystemInit()是系统初始化,时钟的配置等都放在这里,在启动文件里调用SystemInit()。

出0入0汤圆

 楼主| 发表于 2012-10-18 15:17:43 | 显示全部楼层
谢谢大家的意见,现在程序已经可以正常运行了,不过其间改的东西太多,所以还不知道是改了哪一个解决的问题……

出0入0汤圆

发表于 2012-10-18 15:28:51 | 显示全部楼层
期待楼主的解决方法纳

出0入0汤圆

发表于 2012-10-19 15:36:55 | 显示全部楼层
还有一种情况就是进ISP了

出0入0汤圆

发表于 2013-5-1 11:15:03 | 显示全部楼层
可能是Printf 函数问题因printf()之类的函数,使用了半主机模式。使用微库的话,不会使用半主机模式,所以就没有问题。
添加下面代码,就可以使用标准库了:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;

出0入0汤圆

发表于 2013-6-13 22:31:56 | 显示全部楼层
max232 发表于 2012-10-17 22:48
是不是微库的问题,网上有很多人遇到同样的问题

我也出现了这问题,但与这情况相反,使用了printf,但没选择微库.
后来把printf注释掉,stdio.h也注释掉,就OK了!
//#include        "stdio.h"

出0入0汤圆

发表于 2013-12-20 09:46:52 | 显示全部楼层
本帖最后由 drydiy 于 2013-12-20 09:50 编辑

我也遇得这种情况,花了一天时间才解决,我是从STM32F103ZE的程序改成STM32F105VC的,要把启动文件换成startup_stm32f10x_cl.s,同时Preprocessor Symbols 中的DEFINE 那行的 STM32F10X_HD 改成 STM32F10X_CL.以下是大概过程:
1.先是按本帖14楼的方法,选上USE microlib,但还是没用。因为我根本没有用printf函数。
2.仔细观察后来发现debug后,单步时提示  *** error 65: access violation at 0x40021000 : no 'read' permission
搜下一下根据这个帖http://www.amobbs.com/thread-5529894-1-1.html   
1楼的方法,没有解决,4楼是比较全面的方法,也没有解决。
3.最后根据http://www.amobbs.com/thread-5528756-1-1.html 这个帖子2楼的方法,要先设置BOOT1,BOOT2为0才解决了,因为我的硬件有外部把这两个脚改变了。
总结:要先排除硬件的原因,重点为是BOOT1,BOOT2的两个脚电平,不再值对应不同的启动方式。再从软件入手,第2点方法比较全面地解决这个问题。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 16:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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