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.
 
 
 
 
 

39 lines
869 B

#include "iap.h"
// 以最后一个扇区的首个32位空间作为IAP更新的标志
#define IAP_UPDATE_FLAG_ADDR 0x0807FC00
static int32_t Write_IAP_UpdateFlag(uint32_t data)
{
FLASH_Unlock();
// Erase once before writing, 2K each time
// 擦除最后一个扇区2K的空间
FLASH_EraseOnePage(IAP_UPDATE_FLAG_ADDR);
// 写一个uint32_t的数据
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);
}