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