STM32WB55 freertos 低功耗

4 篇文章 0 订阅
2 篇文章 0 订阅

修改app_conf.h

打开低功耗支持宏

/**
 *  When set to 1, the low power mode is enable
 *  When set to 0, the device stays in RUN mode
 */
#define CFG_LPM_SUPPORTED    1

关闭打印控制宏


/**
 * keep debugger enabled while in any low power mode when set to 1
 * should be set to 0 in production
 */
#define CFG_DEBUGGER_SUPPORTED    0//1

/**
 * When set to 1, the traces are enabled in the BLE services
 */
#define CFG_DEBUG_BLE_TRACE     0//1

/**
 * Enable or Disable traces in application
 */
#define CFG_DEBUG_APP_TRACE     0//1

修改FreeRTOSConfig.h configUSE_TICKLESS_IDLE
定义成 1 将使用默认的 vPortSuppressTicksAndSleep
定义成 2 将使用自定义的 vPortSuppressTicksAndSleep

#define configUSE_TICKLESS_IDLE                  2

选择低功耗模式为 stop 模式

static void APPE_SysUserEvtRx( void * pPayload )
{
  UNUSED(pPayload);
  /* Traces channel initialization */
  APPD_EnableCPU2( );

  APP_BLE_Init( );
//  UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
	UTIL_LPM_SetStopMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
  return;
}

进入和退出低功耗 外设的处理放在下图中的两个函数
在这里插入图片描述

这里有一个osDelay的坑

FreeRTOS.h中 configEXPECTED_IDLE_TIME_BEFORE_SLEEP
表示系统进入低功耗前空闲的tick数 默认值是2

#ifndef configEXPECTED_IDLE_TIME_BEFORE_SLEEP
	#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP 2
#endif

如果你在应用程序中调用了osDelay 应用中最大的延时参数是 x,
并且 x > configEXPECTED_IDLE_TIME_BEFORE_SLEEP
系统会在不合适的时间进入低功耗然后导致之后系统反复进入退出低功耗模式导致功耗较高,
我实测如果没注意这个问题系统反复进退低功耗模式 STM32 WB55xx 有600多个微安

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值