Instead of using a watchdog to force a reset use the CMSIS call
static __INLINE void NVIC_SystemReset(void)
which will result in the Reset Source Identification Register setting SYSRESET bit. This frees up the watchdog to be used as an actual watchdog. Right now, if the watchdog times out, the system enters bootload mode, it does not reset