/********************************************************************
FUNCTION: Data_FlashInit(void)
DESCRIPTION: 初始化数据Flash (解锁)
INPUT:
OUTPUT:
RETURN:
Created By: Created Date:
********************************************************************/
void DataFlashInit(void)
{
/* Define flash programming Time*/
FLASH_SetProgrammingTime(FLASH_ProgramTime_Standard);
/* Unlock flash data eeprom memory */
FLASH_Unlock(FLASH_MemType_Data);
/* Wait until Data EEPROM area unlocked flag is set*/
while (FLASH_GetFlagStatus(FLASH_FLAG_DUL) == RESET);
}
/***************************************************************************
FUNCTION: Data_FlashRead(uint32_t FlashAddr, uint8_t *dest, uint16_t nbyte)
DESCRIPTION: 读数据Flash
INPUT: FlashAddr 地址 *dest 读出数据存储地址 nbyte 个数
OUTPUT:
RETURN: TRUE 读成功 FALSE 不成功
CREATED BY: CREATED DATE:
***************************************************************************/
uint8_t DataFlashRead(uint32_t FlashAddr, uint8_t *dest, uint16_t nbyte)
{
uint8_t i;
if((FlashAddr<DATA_MEMORY_START_ADDR)||(FlashAddr+ nbyte >DATA_MEMORY_STOP_ADDR))
{
return FALSE;
}
else
{
for(i=0;i<nbyte;i++)
{
*(dest+i)=FLASH_ReadByte(FlashAddr+i);
}
FLASH_WaitForLastOperation(FLASH_MemType_Data);
return TRUE;
}
}
/****************************************************************************
FUNCTION: Data_FlashWrite(uint32_t FlashAddr, uint8_t *source, uint16_t nbyte)
DESCRIPTION: 写数据Flash
INPUT: FlashAddr 地址 *source 内容 nbyte 个数
OUTPUT:
RETURN:
CREATED BY: CREATED DATE:
*****************************************************************************/
uint8_t DataFlashWrite(uint32_t FlashAddr, uint8_t *source, uint16_t nbyte)
{
uint8_t i;
if((FlashAddr<DATA_MEMORY_START_ADDR)||(FlashAddr+ nbyte >DATA_MEMORY_STOP_ADDR))
{
return FALSE;
}
else
{
for(i=0;i<nbyte;i++)
{
FLASH_ProgramByte((FlashAddr+i),*(source + i));
}
FLASH_WaitForLastOperation(FLASH_MemType_Data);
return TRUE;
}
}
|