[应用方案] M051系列配置深度睡眠模式的示例代码

[复制链接]
1537|1
 楼主| 结合国际经验 发表于 2025-2-23 09:24 | 显示全部楼层 |阅读模式
以下是一个配置深度睡眠模式的示例代码(以M051系列为例):

c
复制
#include "M051Series.h"

void EnterDeepSleepMode(void) {
    // 配置唤醒源,例如外部中断
    GPIO_SetMode(P1, BIT0, GPIO_MODE_INPUT);
    GPIO_EnableInt(P1, 0, GPIO_INT_FALLING);
    NVIC_EnableIRQ(GPIO_P1P2_IRQn);

    // 进入深度睡眠模式
    CLK_PowerDown();
}

void GPIO_P1P2_IRQHandler(void) {
    // 清除中断标志
    P1->ISRC = BIT0;

    // 唤醒后的处理代码
}

int main(void) {
    // 初始化系统时钟和外设
    SYS_Init();

    // 进入深度睡眠模式
    EnterDeepSleepMode();

    while (1) {
        // 主循环
    }
}

旧年胶片 发表于 2025-11-10 11:03 | 显示全部楼层
M051 配置深度睡眠模式代码:关闭未用外设时钟,GPIO 设为高阻态;配置 SCB->SCR = SCB_SCR_SLEEPDEEP_Msk 使能深度睡眠;设置唤醒源(如外部中断);__disable_irq (); 清中断标志;__WFI (); 进入睡眠。唤醒后需重新初始化时钟,示例需包含头文件,确保寄存器操作正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

66

主题

775

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部