打印
[STM32U0]

STM32U083 Cube FW低功耗样例代码探讨

[复制链接]
658|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xhackerustc|  楼主 | 2024-5-22 00:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
开搞STM32U083的低功耗测评。阅读datasheet和例子代码有些发现。

代码在Projects/NUCLEO-U083RC/Examples/PWR/PWR_STOP0/Src/main.c, 在进入Stop0模式前停掉了systick, 代码和注释是这么写的:

    /* Suspend Tick increment to prevent wakeup by Systick interrupt.         */
    /* Otherwise the Systick interrupt will wake up the device within 1ms     */
    /* (HAL time base).                                                       */
    HAL_SuspendTick();

    HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);



但是阅读datasheet其实可以发现HAL_SuspendTick()是多余的,注释也不对,因为Stop0模式下,systick已经不能唤醒了。事实上,笔者删除HAL_SuspendTick()后测试Stop0进入正常,也不按User键是不会唤醒的。
提议STM32官方更新下代码解决这一点小小问题

使用特权

评论回复
沙发
xhackerustc|  楼主 | 2024-6-23 00:15 | 只看该作者
这个问题找到答案了:结论是HAL_SuspendTick()还是必须的,其实是概率问题,主要防止代码运行wfi指令但还没进stop0模式过程中恰好来了systick中断,这个概率相当小

使用特权

评论回复
板凳
jf101| | 2024-6-23 15:25 | 只看该作者
其实一般情况下按照实际的的案例进行移植程序就好毕竟有时候一些问题无法预料到

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

77

帖子

0

粉丝