
1 sleep,standby,stop,run四种工作状态STM32C071 是一款基于 ARM Cortex-M0+ 内核的微控制器,它提供了多种工作模式以优化功耗和性能。以下是 STM32C071 的四种主要工作状态:Run、Sleep、Stop 和 Standby。 Run 状态:这是微控制器的正常工作状态,所有外设和内核都处于活动状态,以全速运行。在这种状态下,功耗相对较高,但性能也达到最佳。 Sleep 状态:在这种状态下,CPU 停止工作,但外设和内存保持活动状态。Sleep 状态可以显著降低功耗,同时保持对外设的快速响应。从 Sleep 状态唤醒通常只需要几微秒。 Stop 状态:Stop 状态比 Sleep 状态更进一步降低功耗。在这种状态下,CPU、外设和内存都停止工作,但某些外设(如 RTC、备份寄存器等)仍可保持运行。从 Stop 状态唤醒需要更长的时间,通常在毫秒级别。 Standby 状态:这是功耗最低的状态,几乎所有模块都停止工作,包括 CPU、外设、内存和振荡器。只有电源控制器和复位电路保持活动状态。从 Standby 状态唤醒需要最长的时间,通常在几十毫秒级别。Standby 状态适用于长时间不活动的应用,如电池供电设备。 在范例代码中,分别在运行和sleep,standby,stop状态切换,展示结果。状态时用标志位来置位而确定的。 检测的方法有两种,一种直接连STLINK一起测量,然后减去其数据 另一种是从开发板的JP5跳线断开,连接万用表的电流档测量。结果相差不大。 2 sleep状态及功耗2.1 运行代码
2.2 代码说明 通过中断进入睡眠模式并从中唤醒。 在相关软件中,系统时钟设置为 48 MHz。 一个 EXTI 线通过 PC.13 连接到用户按钮,并配置为在按键按下时在下降沿产生中断。 SysTick 被编程为每 1 ms 产生一次中断,并且在 SysTick 中断处理程序中,LED1 被切换以指示 MCU 是处于睡眠模式还是运行模式。 启动后 5 秒,系统自动进入睡眠模式,并且 LED1 停止切换。 用户可以在任何时候按下用户按钮来唤醒系统。 然后软件在运行模式下运行 5 秒,然后再自动进入睡眠模式。 LED1 用于监控系统状态,如下所示: LED1 切换:系统处于运行模式 LED1 关闭:系统处于睡眠模式 2.3 效果 断开JP5位80uA,即0.8mA 3 standby状态及功耗3.1 核心代码如下
编译下载通过 3.2 代码说明 系统时钟设置为 48 MHz,一个 EXTI 线连接到 PC.13 引脚并配置为在下降沿产生中断。 SysTick 被编程为每 1 ms 产生一次中断,并且在 SysTick 中断处理程序中,LED1 被切换以指示 MCU 是处于待机模式还是运行模式。 当在 EXTI 线上检测到下降沿时,会产生一个中断并唤醒系统,然后程序检查并清除待机标志。 清除待机标志后,软件启用连接到 PC.13 的唤醒引脚 PWR_WAKEUP_PIN2,然后清除指示已从 PWR_WAKEUP_PIN2 接收到唤醒事件的相应标志。 最后,系统再次进入待机模式,导致 LED1 停止切换。 接下来,用户可以通过按下连接到唤醒引脚 PWR_WAKEUP_PIN2 的用户按钮来唤醒系统。 WKUP 引脚上的下降沿将从待机模式唤醒系统。 或者,外部复位也将导致系统唤醒。应用程序需要确保 SysTick 在从待机模式唤醒后,程序执行以与复位后相同的方式重新开始,LED1 重新开始切换。 LED1 用于监控系统状态,如下所示: LED1 切换:系统处于运行模式 LED1 关闭:系统处于待机模式 LED1 打开:配置失败(系统将进入无限循环) 3.3 演示效果 断开测量1.35mA 4 stop状态及功耗4.1 代码
4.2 代码解析 如何使用中断进入停止模式并从中唤醒。 在相关软件中,系统时钟设置为 48 MHz,一个 EXTI 线通过 PC13 连接到用户按钮,并配置为在按键按下时在下降沿产生中断。 SysTick 被编程为每 1 ms 产生一次中断,并且在 SysTick 中断处理程序中,LED1 被切换以指示 MCU 是处于停止模式还是运行模式。 启动后 5 秒,系统自动进入停止模式,LED1 停止切换。 用户可以在任何时候按下用户按钮来唤醒系统。 然后软件在运行模式下运行 5 秒,然后再自动进入停止模式。 两个 LED(LED1 和 LED2)用于监控系统状态,如下所示: LED2 亮起:配置失败(系统将进入无限循环) LED1 切换:系统处于运行模式 LED1 关闭:系统处于停止模式 这些步骤在无限循环中重复。 编译并通过 4.3 效果 断开JP5电流最小,7.6uA 5 小结这个代码都是通过置位函数实现置位,如下代码,分别控制流过的电流和功耗。
在停止状态非常小,比正常运行小很多。可以通过不同的功耗对比实现不同的效果。最大工作电流1.35mA,最低停止低至7.6uA,而且可以迅速由软件切换,效果非常好,实现低功耗快速切换。 下面是包括stlink的功耗对比情况,供参考 |
NUCLEO-C071RB评测4_模拟和硬件SPI驱动3.5寸TFT彩屏
NUCLEO-C071RB评测3_PWM测试
NUCLEO-C071RB评测1_GPIO测试
【STM32C0评测】+NUCLEO-C071 PWM输出测试
【STM32C0测评】Nucleo-C092开发板功耗测试
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(软件IIC)
【STM32C0测评】Nucleo-C092开发板IIC通信测试(硬件软件IIC一网打尽)
【STM32C0测评】Nucleo-C092开发板USART串口测试
【STM32C0评测】汇总以及视频讲解
感谢分享,不错