Еще такой момент, когда отладка неадекватно себя ведет: Надо инициализировать адекватно регистр DBGMCU->CR чтобы при останове не продолжала работать периферия и прерывания, которые не должны работать.
Но этого мало. У меня инициализация DBGMCU->CR выполняется перед каждым входом в спящий режим по WFI / WFE. Иначе биты поддержки спящего режима сбрасываются сами. Кто их сбрасывает - ХЗ, может это особенность работы ST-Link и отладчика под Keil. Это так для STM32F1xx, ну и у GD возможно так-же, специально не проверял.
Не установишь DBGMCU_CR_DBG_SLEEP | DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY непосредственно перед WFI - хрен потом отладка зараработает после спячки.