18-STM32F1-内部FLASH存储数据

STM32F1 -内部FLASH编程
STM32的FLASH不但可以存储程序,而且还是可以当EEPROM用。32的FLASH一般都比较大,FLASH的前面部分可以放代码,而最后几页可以存储数据,用于掉电记忆还是挺不错的。
STM32的FLASH是按页类操作的,也就是说每次擦除都必须整页擦除,而不能只擦除一页的一部分,读数据的话不存在这种限制。大容量的芯片每页是2k,而小容量的芯片每页是1k。
STM32的FLASH地址是从0x08000000开始的。比如要操作大容量512k芯片的最后一页FLASH,那么地址是0x08000000+2048*255.其中0x08000000是FLASH的起始地址,512k的芯片共有256页,每页2k,所以地址就是起始地址+前面255页的大小。比如操作64k的小容量的芯片的最后一页,那么地址就是0x08000000+1024*63.因为小容量芯片每页只有1k,所以地址=起始地址+前面63页 大小。
在利用FLASH存储数据的过程中发现一个小问题,存储浮点数精度会丢失,所以只好把浮点数放大再存储,读出来的时候再还原回去。在利用库函数操作的时候,发现库函数的底层会把数据强制转换为无符号整型才存储进FLASH里面,但是如果把负数存储进去,读出来的时候还是负数,就好像强制转换语句失效了一样,其实库函数是没问题的,这个和正数负数在内存中的存储结构有关,在这里不过多的解释。
在STM32的技术手册里是找不到FLASH的相关寄存器和操作的,在《STM32的FLASH编程》里面才有。操作STM32的FLASH如果用寄存器的话是非常麻烦的,而且还非常容易出错,但是如果用库操作的话会非常简单,比如关键字、延时什么的库都帮我们做好了,我们只要调用接口
  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值