首先STM32u083单片机是ST公司在2024年推出得超低功耗得的单片机,具有静态电流和多种超低功耗模式,可以很好得节约能源,可以延长电池得使用寿命,在使用锂电池供电得项目中,有着很大得发挥前景。
内部采用arm-cortex M0 内核得,运行频率可以到达56Mhz,对于ST公司的产品我没有超频使用过,不确定有没有问题。下面分享一下U0系列几种低功耗模式。
现在看下STM32U083得数据手册
2
从数据手册中我们可以看到,该款芯片支持得低功耗模式比较多,我们只需要根据自己得项目需求,使用不同的低功耗模式,下面简单介绍几种常用得低功耗模式
一:几种工作模式介绍
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; } }
总结:单片机进入停止模式后,都可以使用外部中断唤醒单片机,所以我们我们可以使用外部中断的方式唤醒单片机。
单片机进入低功耗后,板载调试SWD是检测不到的,我们可以使用STM32 软件将内部程序擦除,或者是手动按下 板载的按键,在LED灯闪烁的过程中,下载程序这样也是可以的。