打印

STM32F051用FLASH当EEPROM时出错,求解决办**

[复制链接]
5885|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
a105|  楼主 | 2013-2-1 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F051用官方提供的程序单独用FLASH当EEPROM时正常,但一加入中断时就出现HardFault_Handler错,这是为什么,有那个用过,求解决办法.
沙发
wanming2008| | 2013-2-1 22:19 | 只看该作者
http://blog.csdn.net/hitxiaya/article/details/7452579
这里有详细的解说,你可以增加很多打印。。。看能不能找出问题

使用特权

评论回复
板凳
a105|  楼主 | 2013-2-2 00:30 | 只看该作者
现在我找到问题了.原来是地址设置小了,我改了这里
/* EEPROM start address in Flash */
#define EEPROM_START_ADDRESS  ((uint32_t)0x0800E000) /* EEPROM emulation start address:
                                                        from sector2, after 8KByte of used
                                                        Flash memory */
就可以了

使用特权

评论回复
地板
wxlhonker| | 2013-12-12 15:51 | 只看该作者
a105 发表于 2013-2-2 00:30
现在我找到问题了.原来是地址设置小了,我改了这里
/* EEPROM start address in Flash */
#define EEPROM_ST ...

我没看错吧,F051最大不是64Kflash吗,Flash存储地址最大应该到0x0800 7FFF啊,你的0x0800E000也行?奇怪啊!

使用特权

评论回复
5
pattywu| | 2013-12-12 15:53 | 只看该作者
wxlhonker 发表于 2013-12-12 15:51
我没看错吧,F051最大不是64Kflash吗,Flash存储地址最大应该到0x0800 7FFF啊,你的0x0800E000也行?奇怪 ...

你看错了吧。
0x10000,才是64K。0x800e000,在64K范围内。

使用特权

评论回复
6
lai832| | 2013-12-12 16:23 | 只看该作者
pattywu 发表于 2013-12-12 15:53
你看错了吧。
0x10000,才是64K。0x800e000,在64K范围内。

是DS错了,DS里说到0x7fff,实际是到0xffff

使用特权

评论回复
7
wxlhonker| | 2013-12-20 13:38 | 只看该作者
Flash area Flash memory addresses
Size
(bytes)
Name Description
Main Flash
memory
0x0800 0000 - 0x0800 03FF 1 Kbyte Page 0
0x0800 0400 - 0x0800 07FF 1 Kbyte Page 1
0x0800 0800 - 0x0800 0BFF 1 Kbyte Page 2
0x0800 0C00 - 0x0800 0FFF 1 Kbyte Page 3
.
.
.
0x0800 7000 - 0x0800 73FF 1 Kbyte Page 60
0x0800 7400 - 0x0800 77FF 1 Kbyte Page 61
0x0800 7800 - 0x0800 7BFF 1 Kbyte Page 62
0x0800 7C00 - 0x0800 7FFF 1 Kbyte Page 63

真晕,手册上的也会出错啊,我本对上表的数据深信不疑呢,以至于都不自己算算64K是不是7FFF,唉,罪过罪过。

使用特权

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

本版积分规则

7

主题

12

帖子

0

粉丝