打印

求助:FLASH能写入任意地址供下次访问吗

[复制链接]
3312|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shangelaila|  楼主 | 2010-7-12 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
:)RT,我想在程序中保存20个字节的数据,而且断电也不丢失。能不能直接写进FLASH中,就是我指定一个地址写进去,下次上电之后再从这个地址读出数据,不知道这样可行吗?
沙发
香水城| | 2010-7-12 16:25 | 只看该作者
可以,但每次写之前要把这20个字节占用的那个Flash页擦除。

中小容量STM32的Flash页面大小是1K字节,大容量STM32的Flash页面大小是2K字节。

详见:PM0042:STM32F10xxx Flash programming
  PM0063: STM32F100xx value line Flash programming

使用特权

评论回复
板凳
香水城| | 2010-7-12 16:41 | 只看该作者

使用特权

评论回复
地板
shangelaila|  楼主 | 2010-7-12 16:43 | 只看该作者
3# 香水城
在FLASH中存放的位置可以自己随意设置吗?我就是担心影响了正常的存储

使用特权

评论回复
5
香水城| | 2010-7-12 16:48 | 只看该作者
AN2594  EEPROM emulation in in STM32F10x microcontrollers

STM32 FLASH模拟EEPROM 使用和优化

材料都给你了,你先看看。

4楼的问题太简单了,自己先想想吧,:lol

使用特权

评论回复
6
lut1lut| | 2010-7-12 16:52 | 只看该作者
本帖最后由 lut1lut 于 2010-7-12 16:55 编辑

...

使用特权

评论回复
7
vigia| | 2010-7-12 16:53 | 只看该作者
C编译器支持定义常量变量的固定地址的

你可以为一个20字节的数组指定地址,编译器不会让其他数据覆盖该地址的。不过考虑到你需要修改这些数据,就需要擦除整个页,所以为这个数组定义的地址需要独占一个页,你可以通过MAP文件查看你代码的大小,然后为你的数据定义一个远离代码的地址。

使用特权

评论回复
8
mcuisp| | 2010-7-13 06:57 | 只看该作者
C编译器支持定义常量变量的固定地址的

你可以为一个20字节的数组指定地址,编译器不会让其他数据覆盖该地址的。不过考虑到你需要修改这些数据,就需要擦除整个页,所以为这个数组定义的地址需要独占一个页,你可以 ...
vigia 发表于 2010-7-12 16:53

定义了未必就不覆盖,我就为这事浪费过1天。
某著名编译器就硬生生的把定义的指定地址 常数数组 和代码给分到同一空间。

使用特权

评论回复
9
vigia| | 2010-7-13 09:46 | 只看该作者
定义了未必就不覆盖,我就为这事浪费过1天。
某著名编译器就硬生生的把定义的指定地址 常数数组 和代码给分到同一空间。
mcuisp 发表于 2010-7-13 06:57


具体说说么

给大家个参考

使用特权

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

本版积分规则

0

主题

120

帖子

1

粉丝