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

[复制链接]
4205|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中存放的位置可以自己随意设置吗?我就是担心影响了正常的存储
香水城 发表于 2010-7-12 16:48 | 显示全部楼层
AN2594  EEPROM emulation in in STM32F10x microcontrollers

STM32 FLASH模拟EEPROM 使用和优化

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

4楼的问题太简单了,自己先想想吧,:lol
lut1lut 发表于 2010-7-12 16:52 | 显示全部楼层
本帖最后由 lut1lut 于 2010-7-12 16:55 编辑

...
vigia 发表于 2010-7-12 16:53 | 显示全部楼层
C编译器支持定义常量变量的固定地址的

你可以为一个20字节的数组指定地址,编译器不会让其他数据覆盖该地址的。不过考虑到你需要修改这些数据,就需要擦除整个页,所以为这个数组定义的地址需要独占一个页,你可以通过MAP文件查看你代码的大小,然后为你的数据定义一个远离代码的地址。
mcuisp 发表于 2010-7-13 06:57 | 显示全部楼层
C编译器支持定义常量变量的固定地址的

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

定义了未必就不覆盖,我就为这事浪费过1天。
某著名编译器就硬生生的把定义的指定地址 常数数组 和代码给分到同一空间。
vigia 发表于 2010-7-13 09:46 | 显示全部楼层
定义了未必就不覆盖,我就为这事浪费过1天。
某著名编译器就硬生生的把定义的指定地址 常数数组 和代码给分到同一空间。
mcuisp 发表于 2010-7-13 06:57


具体说说么

给大家个参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

120

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部