You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
869 B

#include "iap.h"
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׸<EFBFBD>32λ<EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD>ΪIAP<EFBFBD><EFBFBD><EFBFBD>µı<EFBFBD>־
#define IAP_UPDATE_FLAG_ADDR 0x0807FC00
static int32_t Write_IAP_UpdateFlag(uint32_t data)
{
FLASH_Unlock();
// Erase once before writing, 2K each time
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2K<EFBFBD>Ŀռ<EFBFBD>
FLASH_EraseOnePage(IAP_UPDATE_FLAG_ADDR);
// дһ<EFBFBD><EFBFBD>uint32_t<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (FLASH_COMPL != FLASH_ProgramWord(IAP_UPDATE_FLAG_ADDR, data)) {
FLASH_Lock();
return 1;
}
FLASH_Lock();
return 0;
}
int32_t Set_IAP_UpdateFlag(void)
{
return Write_IAP_UpdateFlag(IAP_UPDATE_FLAG_ENABLE_VALUE);
}
int32_t Reset_IAP_UpdateFlag(void)
{
return Write_IAP_UpdateFlag(IAP_UPDATE_FLAG_DISABLE_VALUE);
}
static uint32_t FLASH_ReadWord(uint32_t address)
{
return *(__IO uint32_t*)address;
}
uint32_t Get_IAP_UpdateFlag(void)
{
return FLASH_ReadWord(IAP_UPDATE_FLAG_ADDR);
}