这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » NUCLEO-U083RC学习历程10-低功耗学习

共1条 1/1 1 跳转至

NUCLEO-U083RC学习历程10-低功耗学习

助工
2024-12-16 15:06:16     打赏

首先STM32u083单片机是ST公司在2024年推出得超低功耗得的单片机,具有静态电流和多种超低功耗模式,可以很好得节约能源,可以延长电池得使用寿命,在使用锂电池供电得项目中,有着很大得发挥前景。

内部采用arm-cortex M0 内核得,运行频率可以到达56Mhz,对于ST公司的产品我没有超频使用过,不确定有没有问题。下面分享一下U0系列几种低功耗模式。

现在看下STM32U083得数据手册

从数据手册中我们可以看到,该款芯片支持得低功耗模式比较多,我们只需要根据自己得项目需求,使用不同的低功耗模式,下面简单介绍几种常用得低功耗模式

一:几种工作模式介绍

1:单片机工作在睡眠模式是M0核心关掉,部分外设处于工作状态 ;

2:low power模式是单片机得核心工作在很低得运行频率下。

3:三种STOP模式都是M0和大部分外设关掉,仅保留唤醒源。

4:待机模式要关闭SRAM,意味着唤醒后程序要从头运行,意思就是单片机需要重新运行。

注意一下:这几种模式都支持RTC唤醒,前提是配置了RTC唤醒功能

STOP2模式只允许用LPUART唤醒,不能用普通UART唤醒,STOP0/1可以用普通UART和LPUART唤醒

STOP0模式
HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI);
STOP1模式
HAL_PWREx_EnterSTOP1Mode(PWR_STOPENTRY_WFI);
STOP2模式
HAL_PWREx_EnterSTOP2Mode(PWR_STOPENTRY_WFI);

实测图片如下:

1:进入停止模式0下得功耗测试:实现现象:板载LED灯闪烁一段时间后,关闭掉外设的所使用引脚的时钟,然后单片机进入停止模式0;可以按下板载的按键,唤醒单片机。

  /* Disable GPIOs clock */
  __HAL_RCC_GPIOA_CLK_DISABLE();
  __HAL_RCC_GPIOB_CLK_DISABLE();
  __HAL_RCC_GPIOD_CLK_DISABLE();
  __HAL_RCC_GPIOE_CLK_DISABLE(); 

    /* 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);
    /* ... STOP 0 mode ... */

    /* Re-configure the system clock to 48 MHz based on MSI, enable and
       select PLL as system clock source (PLL is disabled in STOP mode) */
    SYSCLKConfig_STOP();

可以看到,当程序开始运行的时候,板子功耗在6ma,左右但是当板子的进入低功耗后,整体的板子功耗我这款万用表已经测量不出来了,估计已经到达ua级别了。

在停止模式下,可以使用外部中断对单片机进行唤醒:

/**
  * @brief EXTI line detection callbacks
  * @param GPIO_Pin: Specifies the pins connected EXTI line
  * @retval None
  */
void HAL_GPIO_EXTI_Falling_Callback(uint16_t GPIO_Pin)
{
  if (GPIO_Pin == BUTTON_USER_PIN)
  {
    /* Reconfigure LED4 */
    BSP_LED_Init(LED4);
   /* Toggle LED4 */
    BSP_LED_Toggle(LED4);
    TimingDelay = LED_TOGGLE_DELAY;
  }
}

板载的LED灯闪烁控制函数如下所示:

/**
  * @brief SYSTICK callback
  * @param None
  * @retval None
  */
void HAL_SYSTICK_Callback(void)
{
  if (TimingDelay != 0)
  {
    TimingDelay--;
  }
  else
  {
    /* Toggle LED4 */
    BSP_LED_Toggle(LED4);
    TimingDelay = LED_TOGGLE_DELAY;
  }
}

总结:单片机进入停止模式后,都可以使用外部中断唤醒单片机,所以我们我们可以使用外部中断的方式唤醒单片机。

5.png

单片机进入低功耗后,板载调试SWD是检测不到的,我们可以使用STM32 软件将内部程序擦除,或者是手动按下 板载的按键,在LED灯闪烁的过程中,下载程序这样也是可以的。




关键词: NUCLEO-U083RC     低功耗    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]