PROGMEM is only needed on AVR because the AVR has separate program memory and data memory spaces. On STM32, there is no need for PROGMEM because the memory space is unified.
Declare the memory you wish to be placed only in flash as static const and the linker will place it only in flash. No special macro is needed to read the memory address in STM32 flash.
Your macro will work but does not place the allocation only in flash - the c startup will end up duplicating the memory in RAM.