Emulated EEPROM using STM32F030K6T6
You are using code written for a different STM32 chip which is attempting to access an address where no memory exists on your particular chip, so a fault is triggered.

The STM32F030K6T6 has 32K of flash, normally mapped at addresses 0x800000 to 0x807fff.

The net result of your defines:

#define ADDR_FLASH_PAGE_16    ((uint32_t)0x08008000) /* Base @ of Page 16, 2 Kbytes */

#define EEPROM_START_ADDRESS  ((uint32_t)ADDR_FLASH_PAGE_16) /* EEPROM emulation start address */

#define PAGE0_BASE_ADDRESS    ((uint32_t)(EEPROM_START_ADDRESS + 0x0000))


Is that you are trying to access an address right off the end of those physically present.   To use this chip, you'll have to move the EEPROM_START_ADDRESS to a different place in memory, and then adjust your linker script to make sure not to overlap that page with code.  Probably you would use the last flash erase page actually present - you'll have to consult the flash documentation for your particular chip to make sure you have the right page size and address.

Some STM32 parts famously seem to have more memory than they officially have - for example some of the 16K F0's seem to actually have 32K, and some 64K F1 parts seem to actually have 128K - but your chip does not appear to benefit from such an unofficial capability.