我在 CubeMX 为
STM32WB 上的 BLE 应用程序生成的代码中发现了一些奇怪的东西。在 APP_BLE_Init 中我们有这个:
- /**
- * Do not allow standby in the application
- */
- UTIL_LPM_SetOffMode(1 << CFG_LPM_APP_BLE, UTIL_LPM_DISABLE);
我的理解是,这可以防止 CPU1 在 CPU2 启动时进入待机状态。然后,在 APPE_SysUserEvtRx 中,我们有这个:
- UTIL_LPM_SetOffMode(1U << CFG_LPM_APP, UTIL_LPM_ENABLE);
同样,我的理解是,这是对来自 CPU2 的消息的响应,表明它已完成引导,因此可以再次启用待机模式。
然而,我刚刚注意到这两个调用使用不同的 ID(第一个为 CFG_LPM_APP_BLE 禁用待机模式,第二个为 CFG_LPM_APP 启用它)。结果是当 CPU2 完成引导时,待机模式永远不会重新启用。
这是生成的代码中对 UTIL_LPM_SetOffMode 的仅有的两次调用,因此 ID 的更改似乎不太可能是故意的——为什么我们会看到一个禁用和一个启用,但 ID 不同?
这是故意的,还是生成代码中的错误?如果是故意的,有人可以更详细地向我解释每个 ID 缺少的启用/禁用应该去哪里吗?