打印
[STM32F2]

使用内部时钟源作为计时器时,进入休眠模式

[复制链接]
168|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用内部时钟源作为计时器时,进入休眠模式(Sleep Mode)后的行为是一个重要的考虑因素。以下是一些关键点,帮助您理解在不同休眠模式下,计时器的工作状态以及如何配置。

1. 休眠模式类型
STM32 微控制器具有多种低功耗模式,其中 Sleep Mode 是最常见的一种。主要的低功耗模式包括:

Sleep Mode:核心时钟停止,但外设可以继续运行。可以通过 WFI(Wait For Interrupt) 或 WFE(Wait For Event) 指令进入。
Stop Mode:大部分时钟和外设都停止,功耗更低,通常用于更长时间的低功耗操作。
Standby Mode:这是最低功耗的模式,只有 RTC 等特定外设可以保持活动状态。

使用特权

评论回复
沙发
学生会那点事ya|  楼主 | 2024-9-30 23:44 | 只看该作者
使用外部时钟源的情况
如果计时器配置为使用外部时钟源(如外部晶振),它在某些低功耗模式下仍然可以继续工作。此时,计时器可以保持计数,适用于需要在休眠状态下进行计时的应用。

使用特权

评论回复
板凳
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
实时钟(RTC)
对于需要在低功耗模式下进行计时的应用,建议使用 RTC(实时时钟)

使用特权

评论回复
地板
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
RTC 可以在 Stop Mode 和 Standby Mode 下运行,允许在微控制器进入深度休眠状态时仍然进行时间计数。

使用特权

评论回复
5
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
RTC 通常配备有专门的电源管理功能,以便在低功耗模式下保持准确计时。

使用特权

评论回复
6
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
配置示例
以下是配置 STM32 RTC 的基本步骤,以确保在休眠模式下保持计时:

c#include "stm32f4xx_hal.h"

RTC_HandleTypeDef hrtc;

void RTC_Config(void) {
    // RTC 初始化结构体
    hrtc.Instance = RTC;
    hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
    hrtc.Init.AsynchPrediv = 127;  // 设置异步预分频器
    hrtc.Init.SynchPrediv = 255;    // 设置同步预分频器
    hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; // 关闭 RTC 输出

    if (HAL_RTC_Init(&hrtc) != HAL_OK) {
        // 初始化失败处理
    }
}

void Enter_Sleep_Mode(void) {
    // 进入休眠模式前,确保配置了 RTC
    HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
}

int main(void) {
    HAL_Init(); // 初始化 HAL 库
    RTC_Config(); // 配置 RTC

    // 主循环
    while (1) {
        // 一些处理代码

        // 进入低功耗模式
        Enter_Sleep_Mode();
    }
}

使用特权

评论回复
7
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
在 STM32 微控制器中,当使用内部时钟源作为计时器时,进入休眠模式后计时器通常会停止。

使用特权

评论回复
8
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
为了保持计时功能,建议使用 RTC,尤其是在需要在低功耗模式下运行时。

使用特权

评论回复
9
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
通过正确的配置,可以确保系统在休眠状态下仍能进行时间计数和其他重要功能。

使用特权

评论回复
10
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
Sleep Mode(睡眠模式):

在此模式下,核心时钟停止,但大部分外设仍然保持活动状态。MCU 会根据外部中断或定时器中断唤醒。

使用特权

评论回复
11
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
Stop Mode(停止模式):

进入此模式后,所有时钟(包括主振荡器和内部时钟)会停止,只有某些特定的外设(如 RTC)能够保持运行,功耗非常低。

使用特权

评论回复
12
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
Standby Mode(待机模式):

在此模式下,几乎所有的外设和时钟都被关闭,功耗达到最低水平。只有少数外设(如 RTC)可以保持活动。

使用特权

评论回复
13
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
Sleep Mode:

在睡眠模式下,STM32 的核心时钟会停止,但部分外设(包括计时器)可以继续运行。
HSI(内部高速时钟) 和 HSE(外部高速时钟) 的行为依赖于具体的配置。一般来说,如果未做特殊配置,这些时钟源会继续运行。
计时器状态:如果计时器配置为使用 HSI 或 HSE 时钟,计时器将继续计数。

使用特权

评论回复
14
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
各种模式总结模式内部时钟源(HSI/HSE)外部时钟源计时器行为
Sleep Mode可能继续运行可能继续运行继续计数
Stop Mode停止停止停止计数
Standby Mode停止停止停止计数

使用特权

评论回复
15
学生会那点事ya|  楼主 | 2024-9-30 23:45 | 只看该作者
应用场景示例
需要精确计时的应用:在许多应用中,尤其是需要精确时序或定时任务的场合,使用 RTC 是更优选择。
低功耗模式下的唤醒机制:在休眠模式中,您可以配置 RTC 在特定的时间间隔后唤醒 MCU,从而减少功耗的同时,保持必要的功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

82

帖子

0

粉丝