Check also how SCB->VTOR is set in SystemInit(), really needs to point to symbol gfnVectors, or whatever symbol you have for the vector table in startup.s so it follows the settings/placements determined by the linker and its script.
You can also copy the vectors into RAM, and point at that, if you want to change or "relocate" them. The table for most STM32 needs to be on a 512-byte boundary, depending on size of table the MCU uses.
Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..