RobotHardware-UESTC/Hardware/银星机器人底盘/PiRobot-YH_Firmware v1.1/STM32/BSPLIB/flash.c

61 lines
1.0 KiB
C
Raw Normal View History

2024-01-24 20:47:03 +08:00
#ifdef __cplusplus
extern "C"
{
#endif
#include "flash.h"
u16 Flash_ReadHalfWord(u32 faddr)
{
uint16_t val = 0;
faddr = faddr + FLASH_SAVE_ADDR;
val = *(uint16_t *)faddr;
return val;
}
u32 Flash_ReadWord(u32 faddr)
{
uint16_t val = 0;
faddr = faddr + FLASH_SAVE_ADDR;
val = *(uint32_t *)faddr;
return val;
}
#define PageSize 0x400
void Flash_EnableWrite()
{
/*FLASH_Unlock();
FLASH_ErasePage(FLASH_SAVE_ADDR);
CLEAR_BIT(FLASH->CR, FLASH_CR_PER);*/
FLASH_Unlock();
FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);
FLASH_ErasePage(FLASH_SAVE_ADDR);
// FLASH_ErasePage(FLASH_SAVE_ADDR + PageSize);
}
void Flash_DisableWrite()
{
FLASH_Lock();
}
u32 Flash_WriteHalfWord(u32 faddr, u16 data)
{
faddr = faddr + FLASH_SAVE_ADDR;
return FLASH_ProgramHalfWord(faddr, data);
}
u32 Flash_WriteWord(u32 faddr, u32 data)
{
faddr = faddr + FLASH_SAVE_ADDR;
return FLASH_ProgramWord(faddr, data);
}
#ifdef __cplusplus
}
#endif