Код
void SaveToFlash(void)
{
char *FlashPtr;
char *mem_ptr;
int kk;
mem_ptr = (char *)&stflash_Data;
_DINT();
FlashPtr = (char*) flash_A; // Initialize Flash_A pointer
FCTL1 = FWKEY + ERASE; // Set Erase bit
FCTL3 = FWKEY; // Clear Lock bit
*FlashPtr = 0; // Dummy write to erase Flash segment
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
...
// Write Something Data To Flash
...
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Reset LOCK bit
_EINT();
}
Ну, вот как-то так можно записать данные во флеш.
Начисто содрано с мануала.
Если не надо стирать сегмент (пишем на чистое место), ERASE ставить не надо.
PS: чуть не забыл. Flash_A у меня указывает на сегмент данных А.
#define flash_A 0x1080u // адрес начала сегмента данных А