36 lines
956 B
C
36 lines
956 B
C
|
|
#include "McuBspFlash.h"
|
||
|
|
#include "stm32f1xx_hal.h"
|
||
|
|
|
||
|
|
/* 插除函数 */
|
||
|
|
int8_t McuBspFlashErase(uint32_t StartPageAddress, uint32_t NumbPage)
|
||
|
|
{
|
||
|
|
uint32_t PAGEError = 0;
|
||
|
|
FLASH_EraseInitTypeDef EraseInitStruct;
|
||
|
|
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
|
||
|
|
EraseInitStruct.PageAddress = StartPageAddress;
|
||
|
|
EraseInitStruct.NbPages = NumbPage;
|
||
|
|
if (StartPageAddress + (NumbPage - 1) * FLASH_PAGE_SIZE > ADDR_FLASH_PAGE_255) {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
HAL_FLASH_Unlock();
|
||
|
|
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK) {
|
||
|
|
HAL_FLASH_Lock();
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
HAL_FLASH_Lock();
|
||
|
|
return 0;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 写入数据 */
|
||
|
|
int8_t McuBspFlashWrite64(uint32_t StartPageAddress, uint64_t data)
|
||
|
|
{
|
||
|
|
HAL_FLASH_Unlock();
|
||
|
|
if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, StartPageAddress, data) == HAL_OK) {
|
||
|
|
HAL_FLASH_Lock();
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
HAL_FLASH_Lock();
|
||
|
|
return -1;
|
||
|
|
}
|