#ifdef __cplusplus extern "C" { #endif #include "flash.h" u16 PB_Flash_ReadHalfWord(u32 faddr){ uint16_t val = 0; faddr = faddr + FLASH_SAVE_ADDR; val = *(uint16_t*)faddr; return val; } u32 PB_Flash_ReadWord(u32 faddr){ uint16_t val = 0; faddr = faddr + FLASH_SAVE_ADDR; val = *(uint32_t*)faddr; return val; } #define PageSize 0x400 void PB_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 PB_Flash_DisableWrite(){ FLASH_Lock(); } u32 PB_Flash_WriteHalfWord(u32 faddr, u16 data){ faddr = faddr +FLASH_SAVE_ADDR; return FLASH_ProgramHalfWord(faddr, data); } u32 PB_Flash_WriteWord(u32 faddr, u32 data){ faddr = faddr +FLASH_SAVE_ADDR; return FLASH_ProgramWord(faddr, data); } #ifdef __cplusplus } #endif