Některé piny mají po resetu aktivní pull-up nebo pull-down. Pokud je na těchto pinech po startu nevypnete, budou zvyšovat spotřebu. A to jak při běhu, tak v úsporných režimech. Zde se zaměřte zejména na piny, které slouží pro debuging (JTAG/SWJ). To znamená piny NJTRST, JTDI, JTMS/SWDIO (pull-up) a TCK/JTCK/SWCLK (pull-down). Pokud piny nepoužíváte, tak je po restartu a případně před přechodem do usporných modů nezapomínejte překonfigurovat.

// Příklad pro STM32L462CE

...

// PB4
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;   
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

// PB13, PB14, PB15
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;   
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); 

ThisThread::sleep_for(1);

/* Enter STOP 1 mode */
HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI);

...