/* Programs a half word at a specified Option Byte Data address.  */
FLASH_Status FLASH_ProgramOptionHalfWord(u32 address, u16 data)
/* Programs a half word at a specified Option Byte Data address.  */
FLASH_Status FLASH_ProgramOptionHalfWord(u32 address, u16 data)
{
    FLASH_Status ret;
    FLASH_OPTB_Enable();
    FLASH->CR |= FLASH_CR_OPTPG;
    *(vu16*)address = data;
    ret = FLASH_WaitForLastOperation(ProgramTimeout);
    return ret;
}