微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

stm32 片上flash用作EEPROM掉电保存(绝对可用)

#if !defined  (_FLASH_H)
#define _FLASH_H
#define FLASH_ADR 0x08010000  //要写入数据的地址
#define u8 INT8U
#define u16 INT16U
#define u32 INT32U

union union_temp16
{
    unsigned int un_temp16;
    unsigned char  un_temp8[2];  // example 16: 0x0102  8:[0]2 [1]1
}my_unTemp16;

typedef struct 
{
 u8 apn[20];
 u8 useName[20];
 u8 password[20];
 u8 serverIP[16];
 u8 port[6];
 u8 useCall[3][15];
}configStruct;

configStruct myConf =
{
 "cmnet",
 "\0",
 "201.2.2.2",
 "9002",
 {
  "test123","\0","\0"
 }
};


/******************************************************
flash 字符串写入
每次存入两个字节
*******************************************************/
void FlashWriteStr( u32 flash_add,u16 len,u16* data )
{
 //char cp[12];
 //u8 s = 0;
 u16 byteN = 0;
 FLASH_Unlock();
 FLASH_ErasePage(flash_add);
 //sprintf( cp,"len:%d",len);
 //USART1_Puts(cp);
 while( len )
 {
  
  my_unTemp16.un_temp8[0] = *(data+byteN);
  my_unTemp16.un_temp8[1] = *(data+byteN+1);  
  FLASH_ProgramHalfWord( flash_add+byteN,my_unTemp16.un_temp16 );

  //sprintf( cp,"bye:%d\r\n",s);
  //USART1_Puts(cp);
  if( 1==len )
  {
   //如果数据长度是奇数,为1的时候跳出
   break;               
  }
  else
  {
   byteN += 2;
   len -= 2;
  } 
 }
 FLASH_Lock();
}

/******************************************************
flash 字符串读出到指定data中 
地址与写入data地址同 读出的保存类型也必须一致
*******************************************************/
void FlashReadStr( u32 flash_add,u16* data )
{
 u16 byteN = 0;
 while( len )
 {
  my_unTemp16.un_temp16 = *(vu16*)(flash_add+byteN);
  if( 1==len )
  {
   *(data+byteN) = my_unTemp16.un_temp8[0];
   break;     
  }
  else
  {  
   *(data+byteN) = my_unTemp16.un_temp8[0];
   *(data+byteN+1) = my_unTemp16.un_temp8[1];
   byteN += 2;
   len -= 2;
  }
 }
}

#endif

 

调用方法

INT16U data[2]={0x3234,0x3533};
  
FlashWriteStr(FLASH_ADR,2,&data[0]);//写入两个字节数据
  
FlashReadStr(FLASH_ADR,&data[0]);//读取两个字节数据

 

更好玩,更有趣,创客必进

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐