STM32でライブラリ使えば簡単に読み書きできる。ST凄い。
uint8_t flash_erase() { uint32_t error_sector; FLASH_EraseInitTypeDef EraseInitStruct; HAL_StatusTypeDef result; HAL_FLASH_Unlock(); /* Fill EraseInit structure*/ EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; EraseInitStruct.Banks = FLASH_BANK_1; EraseInitStruct.Page = 63; EraseInitStruct.NbPages = 1; result = HAL_FLASHEx_Erase(&EraseInitStruct, &error_sector); HAL_FLASH_Lock(); return result == HAL_OK && error_sector == 0xFFFFFFFF; } uint8_t flash_write() { uint64_t data = 88; HAL_StatusTypeDef result; flash_erase(); HAL_FLASH_Unlock(); uint32_t Address = 0x0801F800; result = HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, Address, data); HAL_FLASH_Lock(); return result == HAL_OK; } uint8_t flash_read() { uint32_t address = 0x0801F800; uint8_t *data = (uint8_t *)address; return *data; }