| Flash 存储的操作通常包括读取、写入和擦除。在 STM32 中,操作 Flash 存储需要通过专门的库函数,如 STM32 HAL 库提供的 HAL_FLASH_Program 和 HAL_FLASH_Erase 函数。 
 代码示例:Flash 写入操作
 c
 复制代码
 #include "stm32f0xx_hal.h"
 
 #define FLASH_USER_START_ADDR   0x0801F800  // 用户数据存储起始地址
 #define FLASH_USER_END_ADDR     0x08020000  // 用户数据存储结束地址
 
 // 写入 1 字节数据到指定地址
 HAL_StatusTypeDef Flash_Write(uint32_t Address, uint8_t data) {
 HAL_FLASH_Unlock();  // 解锁 Flash 写入
 if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, Address, data) == HAL_OK) {
 HAL_FLASH_Lock();  // 写入完成后锁定 Flash
 return HAL_OK;
 }
 HAL_FLASH_Lock();
 return HAL_ERROR;
 }
 
 // 擦除 Flash 页面(1KB)
 HAL_StatusTypeDef Flash_Erase(uint32_t startAddress) {
 FLASH_EraseInitTypeDef EraseInitStruct;
 uint32_t PageError;
 
 HAL_FLASH_Unlock();
 
 EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES;
 EraseInitStruct.PageAddress = startAddress;
 EraseInitStruct.NbPages = 1;  // 擦除1页(1KB)
 
 if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK) {
 HAL_FLASH_Lock();
 return HAL_ERROR;
 }
 
 HAL_FLASH_Lock();
 return HAL_OK;
 }
 
 
 |