STM8S FLASH与EEPROM读写操作

以下为FLASH操作:

#include "flash.h"
#include "stm8s_flash.h"


void Flash_Write_bytes(uint32_t Address , uint8_t * DataBuff,uint16_t length)
{
  uint16_t Count=0;	
  for( Count=0 ; Count

注:写FLASH前需要解锁   

FLASH_Unlock(FLASH_MEMTYPE_PROG);  //FLASH解锁


以下为EEPROM操作:

#include "EEPROM.h"
#include "stm8s_flash.h"


/*******************************************************************************
* ==EEPROM初始化函数==
* FLASH_DeInit(); --> 复位EEPROM的寄存器值
* FLASH_Unlock(FLASH_MEMTYPE_DATA); --> 解锁 对 Data EEPROM memory 进行操作
* FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); --> 标准编程时间
*******************************************************************************/
void EEPROM_INIT(void)
{
	FLASH_DeInit();
	FLASH_Unlock(FLASH_MEMTYPE_DATA);
	FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
}

/****************************************************************************************
*  Function: Derive_EPWrite                                                                        
*  Object: 写EEPROM
*  输入: 头地址(0~2048)  数据指针  数据长
*  输出: 无                                         
*  备注:  2K EEPROM  不能超过
****************************************************************************************/
void Derive_EPWrite(u16 Adr, u8 *pData, u16 Len)
{
	u8 *p;
	//p指针指向EEPROM 对应的单元
	p = (u8*)0x4000 + Adr;   
	//解锁
	FLASH_Unlock(FLASH_MEMTYPE_DATA);
	//写数据
	for( ; Len > 0; Len--)
	{
			Refresh_WWDG_Window();	//喂狗
			*p++ = *pData++;
			//等待写完成
			while(!(FLASH_GetFlagStatus(FLASH_FLAG_EOP))); 
	} 
	//加锁
	FLASH_Lock(FLASH_MEMTYPE_DATA);
}

/****************************************************************************************
*  Function: Derive_EPRead                                                                         
*  Object: 读EEPROM
*  输入: 头地址(0~2048) 数据存放指针 数据长
*  输出: 无                                         
*  备注:  2K EEPROM
****************************************************************************************/
void Derive_EPRead(u16 Adr, u8 *pData, u16 Len)
{
	u8 *p;
	//p指针指向EEPROM 对应的单元
	p = (u8*)0x4000 + Adr; 
	//解锁
	FLASH_Unlock(FLASH_MEMTYPE_DATA);
	//读数据
	for( ; Len > 0; Len--)
	{
		*pData++ = *p++;
		Refresh_WWDG_Window();	//喂狗
	}
	//加锁EEPROM
	FLASH_Lock(FLASH_MEMTYPE_DATA);
}

 

你可能感兴趣的:(STM8)