小松的STM32教程(14)——内部flash模拟eeprom

为什么要用Flash来模拟EEPORM

Flash更适合作为程序存储器,EEPROM更适合作为数据存储器,存储大量数据的时候就需要使用EEPROM,廉价的MCU往往只有FLASH而没有EEPROM,所以这个时候就需要外加EEPROM或者选择一些别的办法,使用Flash模拟EEPROM就是一个很好的选择,说白了就是使用stm32内部flash里面一部分空间用来保存数据,不只是保存程序代码。

FLAHS和EEPROM有什么区别

Flash是按照扇区操作,EEPROM是按字节操作

核心代码讲解

	offaddr=WriteAddr-STM32_FLASH_BASE;		//实际偏移地址.
	secpos=offaddr/STM_SECTOR_SIZE;				//扇区地址,将偏移地址除以每个扇区的大小
	secoff=(offaddr%STM_SECTOR_SIZE)/2;		//在扇区内的偏移(2字节)
	secremain=STM_SECTOR_SIZE/2-secoff;		//扇区剩余空间大小   

S T M 32 _ F L A S H _ B A S E = 0 X 8000000 STM32\_FLASH\_BASE = 0X800 0000 STM32_FLASH_BASE=0X8000000
假设写入地址为
W r i t e A d d r = 0 X 8030000 WriteAddr=0X8030000 WriteAddr=0X8030000
那么偏移地址就是
s e c p o s = 0 X 8030000 − 0 X 8000000 = 0 X 0030000 secpos=0X8030000-0X8000000=0X0030000 secpos=0X80300000X8000000=0X0030000


void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite)	
{
   
	u32 secpos;	   //扇区地址
	u16 secoff;	   //扇区内偏移地址(16位字计算)
	u16 secremain; //扇区内剩余地址(16位字计算)	   
 	u16 i;    
	u32 offaddr;   //去掉0X08000000后的地址&#
  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值