#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