打印

请教:程序未进入main函数就会死掉的问题

[复制链接]
1814|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijiankun|  楼主 | 2015-4-20 11:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  SystemInit
                IMPORT  __main
                LDR     R0, =SystemInit
                BLX     R0
                LDR     R0, =__main
                BX      R0
                ENDP
单片机程序,调试的时候代码老是死在 “BX      R0
”这里,编译是可以过得,没有问题,但是下到板子里面没有一点反应,main函数执行不了,不知道是什么原因,还请各位大牛哪位遇到过相同的问题,指点一下我,先谢谢了。

相关下载

相关帖子

沙发
lijiankun|  楼主 | 2015-4-23 11:52 | 只看该作者
问题已经解决了,在这里也查到几种导致问题的原因,在这里总结一下,希望给遇到同样问题的朋友有所帮助。

1.是工程文件没有建立好,或者系统初始化被修改了(如初始化堆栈大小,中断向量表等)。
2.代码已经跑下去了,但是调试进不去main函数,这个应该是最简单的原因了,不要调试,或者在main函数里面打上断点就行了。
3.在调试代码的时候设置断点过多,可以把断点全部删除试试看,silink只能设置五个断点(这是查到的数据,具体我没试过)
4.可能是那一块指针操作的时候,地址越界了,这个代码量大的话查起来就麻烦了。
5.在写代码,分配地址空间的时候一定要考虑单片机SRAM的大小,尤其是移植别人的代码时更要考虑,最后一个就是代码的实际大小超过了单片机自身的SRAM大小,所以它在初始化时就死了(这个原因是我遇到的,之后对代码进行了精简,就好了)

这里只罗列了一些我查到的,或者我遇到的一些原因,如果大家有其他原因,也请罗列出来,大家相互学习,谢谢了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

94

帖子

3

粉丝