В таком виде работает. сами макросы в скрепке
unsigned char writePage (unsigned char *pRam, unsigned char __flash *pFlash)
/*-- pRam - буфер с данными, которые нужно записать
pFlash - начальный адрес, куда данные нужно записать. должен быть кратен размеру страницы --*/
{
SP_LoadFlashPage (pRam);
SP_WaitForSPM();
SP_EraseWriteApplicationPage((uint32_t)pFlash);
SP_WaitForSPM();
}