Tohle je zajímavé téma. STM knihovny údajně byly napsány tak obecně, aby umožňovaly snadnou migraci na jinou rodinu MCU. Rutiny pro zápis do flash obsahují, ale abyste je mohli použít, je třeba o tom něco vědět. Například že u některých typů tyto rutiny mohou klidně běžet v jiné oblasti flash a nic dramatického se neděje (maximálně se zakoktá nějaká periferie), u jiných musí běžet v ram, jinak to zhavaruje. Možná to někde v komentářích je, ale hledat to nebudu, ty knihovny taky nepoužívám. Periferie těchto obvodů jsou sice složité, ale pro běžné fungování stačí zapsat do registrů několik málo bitů a je nastaveno. Zkoumat všechny možnosti je nad síly běžného člověka, takže to studuje až když to opravdu potřebuje.
Používám oboje, podle účelu. Když zapisuji třeba konfigurační bajty, které se až tak často nemění, tak klidně využiji flash. Ale pokud mám nějaké měření třeba (měřič strojového času, který musí vždy zapisovat poslední čas, kdy ještě byl naživu), tak raději použiji sériovou eeprom, které stojí pár kaček a připojí se dvěma dráty. Stejně tak použiji sériovou eeprom pro větší množství zaznamenávaných dat (datalogger). A pro obrovské objemy dat (třeba snímání fotek přes ccd kameru) je asi nejlepší použít levnou SD kartu s filesystémem.
Na aktuálním projektu (STM32F4xx) je zálohovaný RTC a k němu 4kB zálohované SRAMky. Stačí povolit v registrech, definovat sekci v ldscriptu a je hotovo... Mrkni do datasheetu.
FLASH má obrovskou nevýhodu v tom, že je třeba mazat třeba celý 16kB blok...
Btw, 24Cxx stojí tolik, co baterka a pokud nepotřebuješ RTC, vyjde to mnohem líp.