furi_hal_debug.c 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #include <furi_hal_debug.h>
  2. #include <stm32wbxx_ll_exti.h>
  3. #include <stm32wbxx_ll_system.h>
  4. #include <furi_hal_gpio.h>
  5. #include <furi_hal_resources.h>
  6. volatile bool furi_hal_debug_gdb_session_active = false;
  7. void furi_hal_debug_enable() {
  8. // Low power mode debug
  9. LL_DBGMCU_EnableDBGSleepMode();
  10. LL_DBGMCU_EnableDBGStopMode();
  11. LL_DBGMCU_EnableDBGStandbyMode();
  12. LL_EXTI_EnableIT_32_63(LL_EXTI_LINE_48);
  13. // SWD GPIO
  14. furi_hal_gpio_init_ex(
  15. &gpio_swdio,
  16. GpioModeAltFunctionPushPull,
  17. GpioPullUp,
  18. GpioSpeedVeryHigh,
  19. GpioAltFn0JTMS_SWDIO);
  20. furi_hal_gpio_init_ex(
  21. &gpio_swclk, GpioModeAltFunctionPushPull, GpioPullDown, GpioSpeedLow, GpioAltFn0JTCK_SWCLK);
  22. }
  23. void furi_hal_debug_disable() {
  24. // Low power mode debug
  25. LL_DBGMCU_DisableDBGSleepMode();
  26. LL_DBGMCU_DisableDBGStopMode();
  27. LL_DBGMCU_DisableDBGStandbyMode();
  28. LL_EXTI_DisableIT_32_63(LL_EXTI_LINE_48);
  29. // SWD GPIO
  30. furi_hal_gpio_init_simple(&gpio_swdio, GpioModeAnalog);
  31. furi_hal_gpio_init_simple(&gpio_swclk, GpioModeAnalog);
  32. }
  33. bool furi_hal_debug_is_gdb_session_active() {
  34. return furi_hal_debug_gdb_session_active;
  35. }