This is ancient – the current version is 14.2.0. If you don’t have a strong reason against it you should be using the latest platform version, and with it comes the latest Arduino STM32 core (2.0.0). You might be seeing bugs that have been fixed in the core years ago in your firmware.
Hm, this doesn’t look right. Referencing against the pinout of the Bluepill / STM32F103C8 here shows
MOSI = PB5
MISO = PB4
SCLK = PB3
MOSI = PB15
MISO = PB14
SCLK = PB13
So if the #define P_MISO PB14 is supposed to be for SPI1, which it looks like because you use P_MISO2 etc in the SPI_2 creation, that’s wrong (SPI1 and SPI2 confused). Also, you’ve confused MOSI with MISO (in your code P_MISO2 is PB5 when SPI1_MISO is actually PB4). The latter means you’re most likely crashing at the peripheral pin check.
Also you you shouldn’t give the instantiated SPI object the chip-select pin, because otherwise it’ll assume thaht’s a hardware NSS pin. (Refer here, here and here).