STM32待机唤醒实验

开发步骤

(1)使能电源时钟 因为低功耗模式是通过 STM32 电源(PWR)系统进行管理的,所以需要使能 电源时钟,调用的库函数为: RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能 PWR 外设 时钟 (2)设置 WK_UP 引脚为唤醒源 待机唤醒方式有很多种,我们选择 WK_UP 引脚(PA0)上升沿来退出待机模 式。在库函数中,设置使能 WK_UP 用于唤醒 CPU 待机模式的函数是: PWR_WakeUpPinCmd(ENABLE); 因为按键 KEY_UP 连接在 PA0 管脚上,并且是高电平有效,这样一来就可以 使用 KEY_UP 按键来退出待机模式。 (3)进入待机模式 进入待机模式,首先要设置 SLEEPDEEP 位( 详见《 Cortex M3 权威指南(中 文)》,chpt13 Cortex-M3 的其它特性--电源管理章节),接着我们通过 PWR_CR 设置 PDDS 位,使得 CPU 进入深度睡眠时进入待机模式,最后执行 WFI 指令开 始进入待机模式,并等待 WK_UP 中断的到来。整个操作可以通过一个库函数完 成,如下: PWR_EnterSTANDBYMode();//进入待机模式 通常在进入待机模式前,我们会清除唤醒标志,以等待下次进入。清除唤醒 标志库函数为: PWR_ClearFlag(PWR_FLAG_WU);//清除 Wake-up 标志 以上几步全部配置好后,我们就可以正常进入待机模式了,并且可以通过按 键 KEY_UP 或者复位按键唤醒

wkup.h+wkup.c

#ifndef _wkup_H
#define _wkup_H
#include "system.h"

#endif
#include "wkup.h"

void Enter_Standby_Mode()
{
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//使能pwr外设时钟
    PWR_WakeUpPinCmd(ENABLE);
    
    PWR_ClearFlag(PWR_FLAG_WU);
    PWR_EnterSTANDBYMode();
}
    

main.c

#include "stm32f10x.h"
#include "led.h"
#include "system.h"
#include "wkup.h"

int main()
{
    u8 i=0;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置优先级分组
  SysTick_Init(72);
    LED_Init();
    USART1_Init(115200);//波特率115200
    while(1)
    {
        //倒计时五秒时间缓冲,为了给程序下载提供时间
        printf("倒计时:5\r\n");
        LED1=0;
        delay_ms(1000);
        printf("倒计时:4\r\n");
        LED1=1;
        delay_ms(1000);
        printf("倒计时:3\r\n");
        LED1=0;
        delay_ms(1000);
        printf("倒计时:2\r\n");
        LED1=1;
        delay_ms(1000);
        printf("倒计时:1\r\n");
        LED1=0;
        delay_ms(1000);
        
        printf("进入待机模式\r\n");
        Enter_Standby_Mode();
    
    
    }
    
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值