/* Programs n word at a specified start address.  */
void FLASH_ProgramWord(uint32_t Addr, uint32_t *WordBuffer, uint32_t Length)
/* Programs n word at a specified start address.  */
void FLASH_ProgramWord(uint32_t Addr, uint32_t *WordBuffer, uint32_t Length)
{
  uint32_t i;
  assert_parameters(IS_FLASH_ADRRW(Addr));
  FLASH->PGADDR = Addr;
  FLASH->PASS = FLASH_PASS_KEY;
  for (i=0; i<Length; i++)
  {
    FLASH->PGDATA = *(WordBuffer++);
    while (FLASH->STS != 1);
  }
  FLASH->PASS = 0;
}