打印
[STM32H5]

【STM32 Nucleo-64测评】+3、Retain Mode API 实现

[复制链接]
366|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xu@xupt|  楼主 | 2024-8-14 23:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xu@xupt 于 2024-8-16 00:13 编辑

一、Retain Mode简介
在STM32文档中,关于Retain Mode的实现原理没有详细介绍。但是在文献《Guidelines for power management on STM32H5 MCUs》给出了使用方法,具体连接为:https://www.st.com/resource/en/application_note/an5930-guidelines-for-power-management-on-stm32h5-mcus-stmicroelectronics.pdf。
在PDF中,GPIO保持被描述为:
I/O 保持
在待机模式下,内部调节器被关闭。在这种模式下,几乎所有与外设和内部存储器相关的功耗都被停止。应用程序可能还需要通过 GPIO 控制外部设备。这样做的目的是避免通信协议违规和由于浮动控制信号而导致的额外功耗。
如果应用程序需要保持 GPIO 电平以控制外部设备,必须启用 I/O 保持功能。




基于保持的GPIO唤醒流程如下:

使用流程如下:
• 激活I/O保持功能:
在待机模式下,I/O端口默认处于浮空状态。如果在PWR_IORETR寄存器中设置了IORETEN位,GPIO输出状态将被保持。用于激活此功能的API如下:
HAL_PWREx_EnableStandbyIORetention
• 进入待机模式:
当CPU未被使用或处于轮询模式时,建议进入低功耗模式以减少功耗。用于进入此模式的API是HAL_PWR_EnterSTANDBYMode。




在路径“\AppData\Local\arm\packs\Keil\STM32H5xx_DFP\1.3.0\Drivers\STM32H5xx_HAL_Driver\Src”中有关于API HAL_PWREx_EnableStandbyIORetention的描述。


翻译内容如下:
在待机模式下,I/O端口默认处于浮空状态。如果在PWR_IORETR寄存器中设置了IORETEN位,I/O输出状态将被保持。I/O保持模式对所有I/O端口有效,除了支持待机功能的I/O和JTAG I/O(PA13、PA14、PA15和PB4)。当进入待机模式时,输出状态会被采样,并设置上拉或下拉电阻以在待机模式期间维持I/O输出。
如果在PWR_IORETR寄存器中设置了JTAGIORETEN位,I/O输出状态将被保持。I/O保持模式对PA13、PA14、PA15和PB4启用(唤醒后默认的JTAG上拉/下拉不会被启用)。

二、STM32 Nucleo-64Retain Mode实现
主程序
以下是实现Retain Mode的代码:
int main(void)
{
  HAL_Init();  // 初始化HAL库
  SystemClock_Config();  // 配置系统时钟
  HAL_Delay(5000);  // 延时5秒
  MX_GPIO_Init();  // 初始化GPIO
  MX_ICACHE_Init();  // 初始化指令缓存
  HAL_PWREx_EnableStandbyIORetention();  // 启用待机模式下的IO保持功能
  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);  // 设置PA5引脚为高电平
  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);  // 设置PB2引脚为高电平
  HAL_Delay(1000);  // 延时1秒
  HAL_SuspendTick();  // 挂起SysTick中断
  HAL_PWR_EnterSTANDBYMode();  // 进入待机模式
   while (1)
  {
    HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);  // 翻转PA5引脚的状态(LED闪烁)
    HAL_Delay(500);  // 延时500毫秒
  }
}




使用特权

评论回复
沙发
呐咯密密| | 2024-8-15 14:02 | 只看该作者
最大能保存多少数据

使用特权

评论回复
板凳
狄克爱老虎油| | 2024-8-17 23:21 | 只看该作者
这个API是干嘛用的啊

使用特权

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

本版积分规则

110

主题

683

帖子

2

粉丝