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.
|
|
|
|
#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);
|
|
|
|
|
}
|