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