STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151

困扰许久的问题,在网上查了许多资料未发现有用信息,在今天看os低功耗模式时发现标准库有解决办法,我试验后,发现HAL库也是有这个功能。还有独立看门狗的问题,调试模式时会复位,本文找到了解决方法,可将独立看门狗冻结

目录

    • 1.STOP模式可直接下载程序
    • 2. STOP模式可调试模式
    • 3. 没进低功耗模式问题建议
    • 4. 调试模式时独立看门狗

1.STOP模式可直接下载程序

  /* Enable Ultra low power mode */
  HAL_PWREx_EnableUltraLowPower();

  /* Enable the fast wake up from Ultra low power mode */
  HAL_PWREx_EnableFastWakeUp();

这两句以及cube(具体此部需要实验,需要查询其他资料,本人是试验成功的)STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151_第1张图片
stm32就支持低功耗时直接下载程序。

2. STOP模式可调试模式

关键词:DBGMCU

/** @defgroup HAL_Exported_Functions_Group3 DBGMCU Peripheral Control functions
 *  @brief    DBGMCU Peripheral Control functions
 *
@verbatim
 ===============================================================================
                      ##### DBGMCU Peripheral Control functions #####
 ===============================================================================
    [..]  This section provides functions allowing to:
      (+) Enable/Disable Debug module during SLEEP mode
      (+) Enable/Disable Debug module during STOP mode
      (+) Enable/Disable Debug module during STANDBY mode

@endverbatim
  * @{
  */

官方注释,文件在 stm32l1xx_hal.c

/* DBGMCU Peripheral Control functions  *****************************************/
void              HAL_DBGMCU_EnableDBGSleepMode(void);
void              HAL_DBGMCU_DisableDBGSleepMode(void);
void              HAL_DBGMCU_EnableDBGStopMode(void);
void              HAL_DBGMCU_DisableDBGStopMode(void);
void              HAL_DBGMCU_EnableDBGStandbyMode(void);
void              HAL_DBGMCU_DisableDBGStandbyMode(void);

这些函数加入到代码中就支持DEBUGMCU在各种模式下,比如,HAL_DBGMCU_EnableDBGStopMode,就可以在stop模式下进行调试。

3. 没进低功耗模式问题建议

表现出来进来就出去了,说明一进来就被唤醒了,可以查各种中断、事件看看有没有唤醒。我发现经常被唤醒的是系统滴答

void               HAL_SuspendTick(void);
void               HAL_ResumeTick(void);

也是在同一文件中,HAL_SuspendTick挂起系统滴答,HAL_ResumeTick恢复系统滴答。

4. 调试模式时独立看门狗

/**
  * @brief  IWDG Peripherals Debug mode
  */
#if defined (DBGMCU_APB1_FZ_DBG_IWDG_STOP)
#define __HAL_DBGMCU_FREEZE_IWDG()            SET_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP)
#define __HAL_DBGMCU_UNFREEZE_IWDG()          CLEAR_BIT(DBGMCU->APB1FZ, DBGMCU_APB1_FZ_DBG_IWDG_STOP)
#endif

__HAL_DBGMCU_FREEZE_IWDG() 冻结看门狗,此时在调试模式下看门狗就不会复位
__HAL_DBGMCU_UNFREEZE_IWDG()恢复看门狗
类似的有很多,需要根据需求找自己需要的功能

你可能感兴趣的:(STM32HAL低功耗时也能调试设置,调试模式独立看门狗可被冻结L151)