OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13214|回复: 23

[战舰F103] 分享:战舰通过按键睡眠、停止、待机,闹钟WKUP待机唤醒

[复制链接]

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-11-20 21:29:17 | 显示全部楼层 |阅读模式
本帖最后由 1208 于 2019-1-5 11:11 编辑

通过闹钟,WKUP键按下待机唤醒
1)睡眠模式(CM3 内核停止,外设仍然运行)KEY2
2)停止模式(所有时钟都停止)  KEY0
3)待机模式(1.8V 内核电源关闭) KEY1
方法:
1)要想进入睡眠模式,在执行 WFI 或 WFE 指令时立即进入睡眠模式,如WFI_SET();
睡眠唤醒:若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后
的程序;若由事件唤醒,直接接着执行 WFE 后的程序
注意:用到WFI_SET()指令,一旦有中断就可以将其唤醒,使用RTC实验要关中断才行
2)要想进入停止模式:内核寄存器的 SLEEPDEEP =1PWR_CR 寄存器中的 PDDS=0
然后调用WFI 或 WFE 指令即可进入停止模式
PWR_CR 寄存器的 LPDS=0 时,调压器工作在正常模式, LPDS=1 时工作在低功耗模式;
或者用PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
停止唤醒:若由中断唤醒,先进入中断,退出中断服务程序后,接着执行 WFI 指令后的程序;
若由事件唤醒,直接接着执行 WFE 后的程序。唤醒后,STM32 会使用 HSI 作为系统时钟。
3)要想进入待机模式:内核寄存器的 SLEEPDEEP =1PWR_CR 寄存器中的 PDDS=1PWR_CR 寄存
器中的唤醒状态位
WUF=0,然后调用 WFI 或 WFE 指令即可进入待机模式
待机唤醒:通过 WKUP 引脚的上升沿, RTC 闹钟、唤醒、入侵、时间戳事件或
NRST 引脚外部复位及 IWDG 复位唤醒。

低功耗表格:
低功耗.png

*(u32*)0XE000ED10 &= ~(1<<2);//SLEEPDEEP=0  深度睡眠
*(u32*)0XE000ED10 &= ~(1<<1);//SLEEPONEXIT=0; 睡眠模式
QQ截图20181214193438.png
来自于权威指南



战舰 闹钟和待机唤醒、睡眠、停止模式实验.zip

5.01 MB, 下载次数: 783

战舰 闹钟和WKUP待机唤醒实验.zip

5 MB, 下载次数: 791

战舰 外部中断实验-睡眠模式.zip

3.66 MB, 下载次数: 258

实验5 外部中断实验-停止模式.zip

3.47 MB, 下载次数: 350

业精于勤荒于嬉;行成于思毁于随!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

633

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1331
金钱
1331
注册时间
2016-8-1
在线时间
229 小时
发表于 2018-11-21 08:34:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-11-22 02:18:20 | 显示全部楼层
cool,谢谢分享
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2018-10-30
在线时间
6 小时
发表于 2019-1-9 21:11:56 | 显示全部楼层
按照您的思路,用战舰103ZE的HAL库写了一个RTC唤醒的程序,但是就是第一次待机时间是3秒,从第二级唤醒开始就是1秒了,不知道为什么,能麻烦您帮我看看吗?

战舰_HAL_RTC 唤醒.zip

12.48 MB, 下载次数: 231

回复 支持 反对

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2019-1-10 18:19:48 | 显示全部楼层
本帖最后由 1208 于 2019-1-10 20:29 编辑
天真无鞋 发表于 2019-1-9 21:11
按照您的思路,用战舰103ZE的HAL库写了一个RTC唤醒的程序,但是就是第一次待机时间是3秒,从第二级唤醒开始 ...
换成这句话就可以了
//系统进入待机模式
void Sys_Enter_Standby(void)
{
    __HAL_RCC_APB2_FORCE_RESET();       //复位所有IO口
       __HAL_RCC_PWR_CLK_ENABLE();         //使能PWR时钟
                  
    __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);                  //清除Wake_UP标志
    HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN1);           //设置WKUP用于唤醒
    HAL_PWR_EnterSTANDBYMode();                         //进入待机模式     
}

战舰_HAL_RTC 唤醒.zip

13.14 MB, 下载次数: 366

业精于勤荒于嬉;行成于思毁于随!
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2018-10-30
在线时间
6 小时
发表于 2019-1-11 17:09:17 | 显示全部楼层
1208 发表于 2019-1-10 18:19
换成这句话就可以了
//系统进入待机模式
void Sys_Enter_Standby(void)

亲测有效,多谢大佬,没想到楼主会这么快回复,解决了燃眉之急啊,太感谢楼主了!里面注释的很详细,学习了!
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

高级会员

Rank: 4

积分
789
金钱
789
注册时间
2013-9-29
在线时间
177 小时
发表于 2019-4-10 13:59:56 | 显示全部楼层
我用F429为何不能同时用WKUP和闹钟唤醒?两者都用上的话,RTC闹钟到了时间唤醒不了?
回复 支持 反对

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2019-4-10 15:10:26 | 显示全部楼层
zkyzhh 发表于 2019-4-10 13:59
我用F429为何不能同时用WKUP和闹钟唤醒?两者都用上的话,RTC闹钟到了时间唤醒不了?

这个还没有试过,你看下中文参考手册看下,最好用寄存器来操作
业精于勤荒于嬉;行成于思毁于随!
回复 支持 反对

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2019-4-10 15:16:02 | 显示全部楼层
zkyzhh 发表于 2019-4-10 13:59
我用F429为何不能同时用WKUP和闹钟唤醒?两者都用上的话,RTC闹钟到了时间唤醒不了?

这个还没有试过,你看下中文参考手册看下,最好用寄存器来操作
业精于勤荒于嬉;行成于思毁于随!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2019-5-11
在线时间
7 小时
发表于 2019-5-11 23:49:25 | 显示全部楼层
您好,我是      stm32f103zet6芯片,战舰v2,纽扣电池没电了,写了一个程序是每次待机唤醒更新rtc实时时钟,。同时采用闹钟中断的方式,在唤醒状态下,中断来临进入待机,在待机状态下,中断唤醒,,实现10秒亮10秒灭。但是在用jlink下载后会出现程序运行不正常的状况。。。但是在关上电源在重新打开后程序就运行正常了。自己感觉程序是没有问题的。。。想向您请教一下。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2019-5-11
在线时间
7 小时
发表于 2019-5-11 23:55:20 | 显示全部楼层
您好,我是      stm32f103zet6芯片,战舰v2,纽扣电池没电了,写了一个程序是每次待机唤醒更新rtc实时时钟,。同时采用闹钟中断的方式,在唤醒状态下,中断来临进入待机,在待机状态下,中断唤醒,,实现10秒亮10秒灭。但是在用jlink下载后会出现程序运行不正常的状况。会在第一轮前20秒实现亮灭,但是第二轮在第20秒才会灭,,之后就不会唤醒了。。但是在关上电源在重新打开后程序就运行正常了。自己感觉程序是没有问题的。。。想向您请教一下。
如果采用USB串口的下载方式,会在第一轮就出现在第20秒灭,,之后就不能唤醒的情况,,。但是如果关掉电源在开一次,,程序就运行正常了。@正点原子
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
208
金钱
208
注册时间
2019-5-11
在线时间
7 小时
发表于 2019-5-12 00:20:02 | 显示全部楼层
求助  实时时钟+按键 待机唤醒实验程序遇到的问题。但是感觉问题和下载有关
http://www.openedv.com/forum.php ... &fromuid=147278
(出处: OpenEdv-开源电子网)
回复 支持 反对

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2018-5-15
在线时间
9 小时
发表于 2020-6-9 11:40:06 | 显示全部楼层
谢谢!感谢分享!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2020-4-7
在线时间
7 小时
发表于 2020-9-2 14:36:53 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2020-4-8
在线时间
5 小时
发表于 2020-9-6 10:40:05 | 显示全部楼层
厉害厉害
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-10-5
在线时间
2 小时
发表于 2020-10-5 16:55:04 | 显示全部楼层
谢谢楼主  学到了!万分感谢
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2020-11-30
在线时间
1 小时
发表于 2020-11-30 15:09:06 | 显示全部楼层
您好,请问我用的是STM32F105系列,RTC时钟源为HSE128分频。代码如下:
RTC_Init(2020,11,29,10,23,00);
主程序简要为:
while(1)
{
if(calendar.sec>=10){LED1=!LED1;dealy_ms(50);}
else(Alarm_CNT_Set(10);Sys_Enter_Standby();}
程序不能唤醒,请问是怎么回事?



回复 支持 反对

使用道具 举报

5

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
425
金钱
425
注册时间
2016-3-9
在线时间
74 小时
发表于 2021-1-30 18:56:55 | 显示全部楼层
Mark一下
回复 支持 反对

使用道具 举报

0

主题

33

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1197
金钱
1197
注册时间
2020-3-1
在线时间
236 小时
发表于 2021-3-29 21:42:11 | 显示全部楼层
可以不载来学习学习,感谢分享!!
回复 支持 反对

使用道具 举报

1

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2017-10-11
在线时间
79 小时
发表于 2021-4-29 10:31:34 | 显示全部楼层
谢些分享
回复 支持 反对

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4638
金钱
4638
注册时间
2017-7-6
在线时间
705 小时
发表于 2021-5-28 19:02:15 | 显示全部楼层
楼主,我看手册上写的  停机模式,只能外部中断唤醒;看百度上的又说可以任意中断唤醒,到底是怎样?
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
0
金钱
0
注册时间
2022-1-8
在线时间
0 小时
发表于 2022-1-8 10:48:27 | 显示全部楼层
66666
回复 支持 反对

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2022-4-4
在线时间
66 小时
发表于 2022-9-29 16:31:22 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

16

主题

146

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7125
金钱
7125
注册时间
2015-1-23
在线时间
104 小时
发表于 2022-11-20 17:01:01 | 显示全部楼层
进入待机模式, 使用PA0 WEAKUP 唤醒,  功能可以实现,  但PA0总是异常唤醒, 不对PA0操作, 也唤醒, 没有使用电容滤波.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 22:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表