Witam! Bardzo dobry kurs, dziękuję!
Wykorzystałem lekcję "#17 – termometry DS18B20 (1-wire, UART)" w moim BlackPill STM32F411, wszystko działa doskonale. Teraz przyszła kolej na standby mode, aby pomiary wykonywać periodycznie po wybudzeniu.
Zauważyłem, że zastosowanie samej funkcji HAL_PWR_EnterSTANDBYMode() nie wystarczy w BlackPill (i BluePill): system śpi przez pierwsze 10s, budzi się, a potem wpada w pętlę wakeup-standby bez żadnych przerw. Okazuje się, że przed wejściem w tryb standby trzeba wyczyścić bit wakeup, który jest ustawiany przy wybudzaniu, a zatem poprawna sekwencja wygląda tak:
// Enter the Standby mode
__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
HAL_PWR_EnterSTANDBYMode();
Nie zauważyłem użycia tej flagi w przykładzie z tej lekcji, więc zastanawiam się, czy Nucleo64 wykorzystane do kursu samo jakoś ją czyści przy wakeup? Wyszukiwanie w internecie sugeruje, że zwykle jest potrzebna.
Tak czy owak, mam nadzieję, że informacja się przyda, gdyby ktoś miał podobny problem.