OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8502|回复: 9

STM32F103RB内部FLASH可以存数据吗?

[复制链接]

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
发表于 2014-4-16 13:14:45 | 显示全部楼层 |阅读模式
大家好,我用的是旺宝的MINI板。这个板子不带外部的FLASH,而我查看了103RB的数据手册看到内部的FLASH是程序型FLASH。
请问我可以在程序中直接往内部FLASH存储数据,断电后再上电读取之前保存的数据??
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-16 14:02:48 | 显示全部楼层
回复【楼主位】blatand:
---------------------------------
可以
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-16 14:12:40 | 显示全部楼层
回复【2楼】正点原子:
回复【楼主位】blatand: --------------------------------- 可以
---------------------------------
3Q...我试试.
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-7-3
在线时间
5 小时
发表于 2014-4-16 16:01:20 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
请问原子哥,这个Flash地址的设定问题,比如,stm32f103rbt6,  128kb 容量,flash基地址是0x0800,0000.一段程序,Program Size: Code=19832 RO-data=2968 RW-data=60 ZI-data=1700  那么想用内部flash存数据,FlashAdds = *(vu16*)adds,其中adds = (0x08000000 + (19832/1024+1)*1024)?
回复 支持 反对

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2013-7-3
在线时间
5 小时
发表于 2014-4-16 16:34:54 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
#if STM32_FLASH_SIZE<256
#define STM_SECTOR_SIZE 1024 //字节
#else 
#define STM_SECTOR_SIZE 2048
#endif  
u16 STMFLASH_BUF[STM_SECTOR_SIZE/2];//最多是2K字节
这几句的意思,如果移到RBT6上呢?
回复 支持 反对

使用道具 举报

9

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-4-3
在线时间
18 小时
发表于 2014-4-16 16:58:52 | 显示全部楼层
STM32有分1K一页,2K一页各种不同的版本,具体在规格书可以看到它是一页多少K的。FLASH的地址是在0x08000000随便设置随便写入的,只是它没有EEPROM,必须自己做到心中有数,放的地方APP不能介入。
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-16 22:45:46 | 显示全部楼层
回复【6楼】dixdsqaid:
STM32有分1K一页,2K一页各种不同的版本,具体在规格书可以看到它是一页多少K的。FLASH的地址是在0x08000000随便设置随便写入的,只是它没有EEPROM,必须自己做到心中有数,放的地方APP不能介入。
---------------------------------
写内部FLASH的时候IO口要怎么配置,F_CS,SPI_NSS SPI_MOSI SPI_MISO SPI_SCK使能就可以了??和读外部的flash的程序比较需要修改哪些部分。??
回复 支持 反对

使用道具 举报

9

主题

126

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
226
金钱
226
注册时间
2014-4-3
在线时间
18 小时
发表于 2014-4-17 09:23:38 | 显示全部楼层
回复【7楼】blatand:
---------------------------------差别很大,库有函数。

FLASH_Unlock();
FLASH_ErasePage(0x0800EFF0);
FLASH_ProgramHalfWord(0x0800EFFC,0x0000);
类似这样的调用,就是解锁,擦除,写入。不需要通信的。
回复 支持 反对

使用道具 举报

13

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-2-23
在线时间
1 小时
 楼主| 发表于 2014-4-17 11:01:58 | 显示全部楼层
回复【8楼】dixdsqaid:
回复【7楼】blatand: ---------------------------------差别很大,库有函数。 FLASH_Unlock(); FLASH_ErasePage(0x0800EFF0); FLASH_ProgramHalfWord(0x0800EFFC,0x0000); 类似这样的调用,就是解锁,擦除,写入。不需要通信的。
---------------------------------
我昨晚把程序移植到原子的MINI板子(103RB),改写的程序跑的是好的。存数据开始的地址就是0x08000000,但是今天把程序移植到旺宝MINI板(103RB),当调用写入的函数时,单片机就卡住了。程序运行就不正常了。这种现象是不是说明我存数据的地址和存储程序的地址冲突了。?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-17 21:42:27 | 显示全部楼层
回复【9楼】blatand:
---------------------------------
有可能,你看一下你编译后的代码大小,以及你的写地址是多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-10 04:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表