打印
[STM32F1]

STM32基础篇——待机唤醒

[复制链接]
1088|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 aizaixiyuanqian 于 2017-12-30 12:26 编辑

本此实验介绍 STM32 的待机唤醒功能我们将利用delay_ms 延时和 printf 打印输出 5 秒倒计时后进入待机模式。然后我们将利用 按键来实现唤醒。试验目标:
1、了解 STM32 的低功耗模式。
2、学会让单片机进入待机模式。
3、学会让单片机从待机模式唤醒
沙发
aizaixiyuanqian|  楼主 | 2017-12-30 12:31 | 只看该作者
STM32 低功耗模式:STM32 降低功耗的方法除了可以通过降低系统时钟和关闭 APB 和 AHB 总线上未被使用的外设时钟以外,最好的方式就是让 STM32 进入低功耗模式了。 STM32 的低功耗模式一共有三种模式:
1、睡眠模式。Cortex-M3 内核停止,所有外设包括 Cortex-M3 核心的外设,如:NVIC、系统时钟(SysTick)等仍在运行。
2、停止模式。所有时钟都已停止。
3、待机模式。1.8V 电源关闭。




使用特权

评论回复
板凳
aizaixiyuanqian|  楼主 | 2017-12-30 12:37 | 只看该作者
三种模式详细如下:

在这三种模式中,最低功耗的是待机模式,在待机模式下,最低只需要 2uA 左右的电流。
停机模式是次低功耗模式,典型电流的消耗在 20uA 左右。最后就是睡眠模式了。

使用特权

评论回复
地板
aizaixiyuanqian|  楼主 | 2017-12-30 12:40 | 只看该作者
低功耗的操作步骤
本次试验程序先进行 5 秒种的倒计时然后让单片机进入待机模式,进入待机模式后,单片机不工作。当按键 按下后系统待机模式被唤醒,继续倒计时 5 秒后又进入待机模式。

按照上面的设置,就能够进入低功耗模式。

使用特权

评论回复
5
aizaixiyuanqian|  楼主 | 2017-12-30 12:41 | 只看该作者
进入低功耗的程序操作
1.  进入待机模式
1)  在设置之前,我们先将低功耗的时钟设置打开。
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); //使能 PWR 外设时钟
2)  然后使能引脚唤醒功能。
我们可以使用 PWR_WakeUpPinCmd()函数,它有一个参数,用来设置状态值,我们要开启所以设为:ENABLE。代码为: PWR_WakeUpPinCmd(ENABLE); //使能唤醒管脚功能
3)  然后进入待机模式在 库 函 数 中 , 有 直 接 进 入 低 功 耗 模 式 的 函 数 。
PWR_EnterSTANDBYMode()。它无参数直接调用就可以了。

使用特权

评论回复
6
aizaixiyuanqian|  楼主 | 2017-12-30 14:31 | 只看该作者
待机例程
void standmodeinit() //待机模式
{
NVIC_SystemLPConfig(NVIC_LP_SLEEPDEEP,ENABLE);//选择系统进入低功耗模式的条件
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能 PWR 外设时钟
PWR_WakeUpPinCmd(ENABLE);//使能唤醒管脚 使能或者失能唤醒管脚功能
PWR_EnterSTANDBYMode();//进入待机模式
}

使用特权

评论回复
7
aizaixiyuanqian|  楼主 | 2017-12-30 14:32 | 只看该作者
例程主程序
int main()
{
printf_init();  //printf 初始化
while(1)
{
printf("time: 5\r\n");
delay_ms(1000);  //隔 1 秒显示计数
printf("time: 4\r\n");
delay_ms(1000);
printf("time: 3\r\n");
delay_ms(1000);
printf("time: 2\r\n");
delay_ms(1000);
printf("time: 1\r\n");
delay_ms(1000);
printf("进入系统待机模式\r\n");
standmodeinit();//待机模式配置
}
}

使用特权

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

本版积分规则

62

主题

1353

帖子

6

粉丝