389|4

2799

帖子

4

TA的资源

五彩晶圆(中级)

【NUCLEO-U083RC】EXIT中断测试及功耗测试 [复制链接]

STM32U083RC的带有多种运行模式,其中一种是“待机模式”和“运行模式”,

待机模式:所有的活动暂停,只保留SRAM的内容。

运行模式:正常的运行模式。所有的活动正常进行。

两种模式之间可以自由切换。这样的设计可以在不需要MCU工作时节省电力。本次的进行两种模式切换的测试。

  1. 准备工作

开发板的JP5,跳线打开。接入万用表的电流测量档插孔。将挡位调到mA位准备测量。

image-20240515180842-1.png  

2、设置程序配置

需要设置,PA5为输出,PC13为按钮exti类型输入。

image-20240515180842-2.png  

 

3、编写测试程序

首先打开程序,在stm32u0xx_it.C中增加按钮的代码。

/**

  * @brief   This function handles external line 13 interrupt request.

  * @param  None

  * @retval None

  */

void USER_BUTTON_IRQHANDLER(void)

{

  /* Manage Flags */

  if(LL_EXTI_IsActiveFallingFlag_0_31(USER_BUTTON_EXTI_LINE) != RESET)

  {

    LL_EXTI_ClearFallingFlag_0_31(USER_BUTTON_EXTI_LINE);

 

    /* Manage code in main.c.*/

    UserButton_Callback();

  }

}

其中的函数UserButton_Callback()在main.c文件中,声明在main.h中。

/******************************************************************************/

/*   USER IRQ HANDLER TREATMENT                                               */

/******************************************************************************/

/**

  * @brief  Function to manage BUTTON IRQ Handler

  * @param  None

  * @retval None

  */

void UserButton_Callback(void)

{

  /* Turn LED off */

  LL_GPIO_ResetOutputPin(LED4_GPIO_Port, LED4_Pin);

 

  /* Configure and enter in Standby Mode */

  EnterStandbyMode();

 

  /* Here Device is in Standby mode */

}

关键的函数为EnterStandbyMode();模式切换。

模式切换的代码;

/**

  * @brief  Function to configure and enter in Standby Mode.

  * @param  None

  * @retval None

  */

void EnterStandbyMode(void)

{

  /* Wait that user release the User push-button */

  while(UserButton_GetState() == 0){}

 

  /* Turn-off LED */

  /* Note: LED state at this step depends on blinking state at the instant of user button is pressed. */

  LL_GPIO_ResetOutputPin(GPIOA, LL_GPIO_PIN_5);

 

  /* Set wakeup pin polarity */

  LL_PWR_SetWakeUpPinPolarityLow(LL_PWR_WAKEUP_PIN2);

 

  LL_PWR_EnablePUPDCfg();

  LL_PWR_EnableGPIOPullUp(LL_PWR_GPIO_C, LL_PWR_GPIO_BIT_13);

 

  /* Enable wakeup pin */

  LL_PWR_EnableWakeUpPin(LL_PWR_WAKEUP_PIN2);

 

  /* Clear wake up Flag */

  LL_PWR_ClearFlag_WU2();

  /* As default User push-button state is high level, need to clear all wake up Flag again */

 

  /** Request to enter Standby mode

    * Following procedure describe in STM32U0xx Reference Manual

    * See PWR part, section Low-power modes, Standby mode

    */

  /* Set Standby mode when CPU enters deepsleep */

  LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY);

 

  /* Set SLEEPDEEP bit of Cortex System Control Register */

  LL_LPM_EnableDeepSleep();

 

  /* This option is used to ensure that store operations are completed */

#if defined ( __CC_ARM)

  __force_stores();

#endif

  /* Request Wait For Interrupt */

  __WFI();

}

其中的进入待机模式的指令是LL_PWR_SetPowerMode(LL_PWR_MODE_STANDBY);,但是不要着急,在进入前需要将唤醒引脚模式设置成低电平唤醒

LL_PWR_SetWakeUpPinPolarityLow(LL_PWR_WAKEUP_PIN2);

将引脚设置成上升沿触发

LL_PWR_EnableGPIOPullUp(LL_PWR_GPIO_C, LL_PWR_GPIO_BIT_13);

设置按钮引脚为触发引脚

LL_PWR_EnableWakeUpPin(LL_PWR_WAKEUP_PIN2);

进入待机模式。

唤醒过程是自动完成地。

4、测试过程

正常运行时,运行电压为3.3V,电流为0.398mA,LD4不断闪烁

image-20240515180842-3.png  

进入待机模式。

image-20240515180842-4.png  

待机后的电流已经降到uA级了,测量电流为0.12uA

image-20240515180843-5.png  

这个电流水平已经很低了。

 

此帖出自stm32/stm8论坛

最新回复

两种模式之间可以自由切换。这样的设计可以在不需要MCU工作时节省电力   详情 回复 发表于 2024-5-22 11:46

回复
举报

131

帖子

0

TA的资源

一粒金砂(高级)

USER_BUTTON_IRQHANDLER(void)这个是重新编写了还是重定义的,直接用回调函数就可以把

此帖出自stm32/stm8论坛

回复

6465

帖子

9

TA的资源

版主

这是需要手动换档来测试吗?我测试的成绩怎么没有这么优秀呀。

此帖出自stm32/stm8论坛

点评

这个和你的用的内容不同而异,我只是使用了最简单的GPIO端口,如果使用更多的外设,需要的功耗一会增加的  详情 回复 发表于 2024-5-19 09:35

回复

2799

帖子

4

TA的资源

五彩晶圆(中级)

lugl4313820 发表于 2024-5-19 07:16 这是需要手动换档来测试吗?我测试的成绩怎么没有这么优秀呀。

这个和你的用的内容不同而异,我只是使用了最简单的GPIO端口,如果使用更多的外设,需要的功耗一会增加的

此帖出自stm32/stm8论坛

回复

56

帖子

0

TA的资源

一粒金砂(中级)

两种模式之间可以自由切换。这样的设计可以在不需要MCU工作时节省电力

此帖出自stm32/stm8论坛

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
2007年全国大学生电子设计竞赛 题目推测汇总(不断更新中8.30)

本帖最后由 paulhyde 于 2014-9-15 04:19 编辑 2007年全国大学生电子设计竞赛 题目一: 一、 设计任务 设计一多功数字自适应 ...

说说2812

1 芯片介绍 TMS320F2812是 TI公司新近推出的 2 000家族中的一款 32位定点 DSP ,适于电机控制系统应 用。其自身的性能特点如 ...

基于SA7527日光灯隔离驱动板

最近买了2块,SA7527日光灯隔离驱动板:适用于 T8(尺寸大的那种) T10; IC原来未知,先抄板,画原理图;最后通过论坛发了个帖 ...

运放稳定性-(第五第六部分)

本帖最后由 dontium 于 2015-1-23 12:49 编辑 第五部分-单电源缓冲器的实际设计 第六部分-电容性负载稳定性

Arduino AR-15机枪设计-目标自动检测--EEWORLD大学堂

Arduino AR-15机枪设计-目标自动检测:https://training.eeworld.com.cn/course/2095使用了摄像头、AR-15、Arduino和步进电机,并 ...

UBOOT引导Linux内核及向内核传递参数的方式

一直以来没有想过有什么好的办法通过寄存器向内核传递参数,直到今天读UBOOT的实现方式。   在UBOOT中,引导内核最常用的 ...

单片机裸奔之状态机浅谈

说到单片机编程,不得不说到状态机,状态机做为软件编程的主要架构已经在各种语言中应用,当然包括C语言,在一个思路清晰而且高 ...

【树莓派4B测评】+ 实时状态监控网站测试各服务资源占用

本帖最后由 sylar^z 于 2020-9-22 20:23 编辑 在之前的评测中,我已在树莓派中搭建了XRDP远程桌面服务、DLNA、FTP、ARIA2及实 ...

ASM330LHHX汽车级6轴惯性模块相关资料及驱动程序

ASM330LHHX的机器学习内核是一款硬连线处理引擎,可直接在传感器上运行人工智能(AI)算法,在感知事件和车辆响应之间确保了极低 ...

RISC-V架构内核的Micropython的移植开发工作

大家好, 现目前计划在团队自己完成的RISC-V架构的内核移植Micropython,以更加便捷进行嵌入式开发。目前内核仅添加UART模 ...

关闭
站长推荐上一条 1/10 下一条

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

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

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

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