STM32 crashing to Default_Handler
Do you have a systick handler function? Otherwise, the default handler will get called after a set amount of time (at least with that start-up file).

Edit, in reply to comments:

All of the ARM Cortex microcontrollers have a built in 24 bit system timer, which is referred to as the systick. The timer counts down from a value you can configure to zero and when it reaches zero it fires the systick interrupt. Its main purpose is to provide timing to the software - for example you can set it up to fire the interrupt every millisecond, which can be quite useful for timing or running an operating system.

The systick interrupt needs to have a handler - in your startup file it is set to the default handler, which is essentially an infinite loop. The handler does not have to do anything, it can just be an empty function,

void SysTick_Handler(void)
{
}


but for most uses you will want to increment your own counter, to keep track of milliseconds for example,

uint32_t sys_count=0;
void SysTick_Handler(void)
{
    ++sys_count;
}


or run part of the operating system.