/* Programs a word (32-bit) at a specified address.  */
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)
/* Programs a word (32-bit) at a specified address.  */
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data)
{
  FLASH_Status status = FLASH_COMPLETE;
  assert_param(IS_FLASH_ADDRESS(Address));
  status = FLASH_WaitForLastOperation();
  if(status == FLASH_COMPLETE)
  {
    FLASH->CR &= CR_PSIZE_MASK;
    FLASH->CR |= FLASH_PSIZE_WORD;
    FLASH->CR |= FLASH_CR_PG;
    *(__IO uint32_t*)Address = Data;
    status = FLASH_WaitForLastOperation();
    FLASH->CR &= (~FLASH_CR_PG);
  }
  return status;
}