打印

STM32第一个程序的问题

[复制链接]
2361|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alex74|  楼主 | 2009-4-21 08:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
resetPC指针指向reset handle,正常的。
但是总是发生 Hard Faults,如果用程序从hard faults跳到__main入口,整个程序跑起来正常。

就是说程序是正常的,但是第一步就发生了hard faults。无论单步还是run都是如此。hard faults的寄存器截图如下:
https://bbs.21ic.com/upfiles/img/20094/200942185245795.jpg

为啥呢
沙发
alex74|  楼主 | 2009-4-21 13:09 | 只看该作者

ai

竟然没人回

使用特权

评论回复
板凳
香水城| | 2009-4-21 13:41 | 只看该作者

信息不全:什么工具?什么版本?

怀疑是软件版本问题。

使用特权

评论回复
地板
alex74|  楼主 | 2009-4-21 14:16 | 只看该作者

...

MDK 3.5, 芯片是stm32f103rb。

使用特权

评论回复
5
香水城| | 2009-4-21 14:41 | 只看该作者

调试器?

使用特权

评论回复
6
alex74|  楼主 | 2009-4-21 14:57 | 只看该作者

jlink v5.4 
驱动是最新的驱动。

对了。sim模拟没有问题,但是jtag单步和烧进去自己跑都有问题

使用特权

评论回复
7
alex74|  楼主 | 2009-4-21 16:42 | 只看该作者

版主版主

又做了几个实验:
1. 改用MDK 3.4, 还是老问题,第一步就跳到 hard faults里面去了。 如果手工指定pc到__main, 那么程序正常的跑。

2. 使用ST的HW_LIB 3.0里面的例程。现象完全一样。

难道是芯片本身的问题?这块芯片确实有问题?
或者是jtag的问题?但是自加载也不能跑的。

使用特权

评论回复
8
香水城| | 2009-4-21 16:46 | 只看该作者

你的软件版本与底层的驱动不匹配

软件在加载程序时不能正确地设置PC指针。

使用特权

评论回复
9
alex74|  楼主 | 2009-4-22 08:53 | 只看该作者

...

reset后看pc指针是对的,指向reset入口。
但是第一步发生了hard fault 指针变掉了。

你的软件版本与底层的驱动不匹配
---------------
驱动是指的jlink驱动?
但是用这个驱动烧写flash,加载都是好的

使用特权

评论回复
10
香水城| | 2009-4-22 08:58 | 只看该作者

Reset后看PC指针,数值是多少?

你怎么知道是对的?

如果数值是0x0000 0000就错了!!

使用特权

评论回复
11
alex74|  楼主 | 2009-4-22 09:16 | 只看该作者

reset后不是0

指向那个reset中断处理函数的。

我上传代码,拜托看看,代码很容易读的。
根目录下有目录说明。
项目文件使用storm->boot->build->boot.uv2

https://bbs.21ic.com/upfiles/img/20094/200942291413437.rar
相关链接:https://bbs.21ic.com/upfiles/img/20094/200942291413437.rar

使用特权

评论回复
12
静默| | 2009-4-22 10:01 | 只看该作者

偶用3.22a 用的是ST-LINK-II

先给结果...........

使用特权

评论回复
13
静默| | 2009-4-22 10:05 | 只看该作者

option的debug页

project option的debug页中设置如图

使用特权

评论回复
14
静默| | 2009-4-22 10:08 | 只看该作者

改Option 的Linker页选项

使用特权

评论回复
15
vigia| | 2009-4-22 10:08 | 只看该作者

我怀疑是你没有正确烧录FLASH

看看你用的烧录算法是否针对你所使用的芯片

使用特权

评论回复
16
静默| | 2009-4-22 10:13 | 只看该作者

建议楼主先用库写软件

楼主太强,不用库写软件、直接玩寄存器,看得头晕。

使用特权

评论回复
17
alex74|  楼主 | 2009-4-22 11:21 | 只看该作者

。。。

to 静默
非常感谢!

我也觉得不是软件问题
你用3.22+stlink,要么我mdk3.5有问题,要么我的jlink有问题,要么我的芯片有问题,还有要么就是我电脑有问题。

我晕了。

还有就是我用的是st 3.0的库,自己又封装了一层。呵呵
我用的是自己的scatter文件,呵呵。不过改成和你一样的配置也是不行

to vigia 
flash确认是烧好的,我专门测试过flash烧写的问题,改一个const变量,然后看flash相应位置是否变了

使用特权

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

本版积分规则

43

主题

474

帖子

3

粉丝