688|0

285

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

【NUCLEO-H533RE开发板测评】05 待机模式下强大的GPIO保持功能 [复制链接]

本帖最后由 怀揣少年梦 于 2024-8-12 13:27 编辑

本次测评就来测试一下,待机模式下的retain mode功能。这个功能可以让用户在待机模式保持输出电平状态,用于控制一些有效控制,在待机模式可以把功耗做到很低。

一、retain mode是什么?

1)定义retain mode其实就是在某种电源模式下,保持某些功能的一种模式。

2)GPIO retain mode

重点介绍一下待机模式下GPIO retain mode功能

定义:

GPIO retain mode是指在待机模式下,GPIO的状态(输入、输出、上拉、下拉)能够进行保持。

 

二、GPIO retain mode原理

在待机模式下,IO口的状态默认是浮空的,但是如果PWR_IORETR寄存器中的 IORETEN bit写11,IO的输出状态是保持的,也就是用户在进入待机模式之前的GPIO状态是被保存下来,在待机期间,GPIO的状态和进入待机模式之前的状态一致。

 

从待机模式退出之后,只要IORETEN的位还是1,那么相应的GPIO的状态是不会改变的(不管GPIO的状态是不是一致)。只有当清除IORETEN的位后,GPIO的状态才可以改变。

 

三、代码编写

1、创建工程的过程就不赘述。配置PA5和PB2的状态为输出,初始电平为高电平。

2、主函数代码编写

1)首先开启待机模式GPIO retain功能

HAL_PWREx_EnableStandbyIORetention();

2)进入待机模式

HAL_PWR_EnterSTANDBYMode();

3)整体代码如下

  
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
    //HAL_DBGMCU_EnableDBGStandbyMode();
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */
    HAL_Delay(5000);
  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ICACHE_Init();
  /* USER CODE BEGIN 2 */

    HAL_PWREx_EnableStandbyIORetention();
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
    HAL_GPIO_WritePin(GPIOB,GPIO_PIN_2,GPIO_PIN_SET);


    HAL_Delay(1000);
    HAL_SuspendTick();
    
     //HAL_PWREx_DisableStandbyIORetention();//当第二次编译加上这条语句时,保持功能就取消了,LED灯不亮
    HAL_PWR_EnterSTANDBYMode();
    
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
        HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
        HAL_Delay(500);
  }
  /* USER CODE END 3 */
}

四、验证

1、重新上电之后,可以看到LED灯在待机模式保持常亮;

9cfe812070d43aa25bfd9b6702273158

2、测量PB2的引脚电平,也是高电平;3.3V;

忘记拍照了,使用万用表测量,确实是3.3V

3、当清楚IORETEN的位后,LED灯和PB2就不会保持了,处于低电平状态。

总结:在待机模式下,GPIO retain mode功能就可以保持较低功耗的情况,实现GPIO控制的功能。

工程:

     Retain.zip (1.36 MB, 下载次数: 1)
此帖出自stm32/stm8论坛
点赞 关注
个人签名

阅读改变人生

 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表