找回密码
 立即注册
查看: 5715|回复: 40

STC的掉电唤醒定时器设计很独特

[复制链接]

该用户从未签到

4

主题

0

回帖

42

积分

新手上路

积分
42
发表于 2022-11-28 16:25:13 | 显示全部楼层 |阅读模式
STC的掉电唤醒定时器设计很独特:不用进入中断程序,就可以掉电唤醒了。特别适合用于低功耗电路。如果对时间要求不高,可以直接作为时基信号。最长定时达15.89S,无需再设,直接进入循环状态。像STC15F104W居然也具备这个功能。使用超简单。 1.117.jpg
回复 送花

使用道具 举报

该用户从未签到

0

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2023-1-5 09:51:48 | 显示全部楼层
问题是这个16秒太短了,想搞个半小时怎么办呢?

该用户从未签到

551

主题

9254

回帖

1万

积分

管理员

积分
13991
发表于 2023-1-5 10:19:26 | 显示全部楼层
那就唤醒后计数,未到时间立即再进低功耗,或者用有 RTC 的 STC8H8K64U系列
1.png

该用户从未签到

551

主题

9254

回帖

1万

积分

管理员

积分
13991
发表于 2023-1-5 10:21:30 | 显示全部楼层
1.png 1.png

该用户从未签到

0

主题

2

回帖

8

积分

新手上路

积分
8
发表于 2023-1-5 10:43:16 | 显示全部楼层
神农鼎 发表于 2023-1-5 10:19
那就唤醒后计数,未到时间立即再进低功耗,或者用有 RTC 的 STC8H8K64U系列

...

我觉得您说的唤醒后立即又进入掉电,循环若干次,这样可行。

该用户从未签到

551

主题

9254

回帖

1万

积分

管理员

积分
13991
发表于 2023-1-5 10:51:20 | 显示全部楼层
基本都是这样,平均电流也就增加个 0.1uA 附近

该用户从未签到

5

主题

21

回帖

112

积分

注册会员

积分
112
发表于 2023-2-14 16:10:06 | 显示全部楼层
本帖最后由 wsr2580 于 2023-2-14 16:26 编辑

大家好,我也在搜索这个信息,但是我没有实现这个需求。

我的产品用的单片机是STC8G1k08,因为我有多个唤醒源唤醒这个单片机,每个唤醒源都执行不同的行为。因为我所用的其他唤醒源都可以进入中断改变状态,而这个不行。

我现在的问题是,如何知道确实是掉电唤醒定时器进行的唤醒,在文档中提到:
掉电唤醒之后,可以通过读 WKTCH 和 WKTCL 中的内容获取单片机在掉电模式中的睡眠时间。
但是,我该怎么读取这个值呢?
  1.         c = 0xaa;
  2.         printf("------%c %c------\n", WKTCH, *c);
  3.         c = 0xab;
  4.         printf("------%c %c------\n", WKTCL, *c);
复制代码

我用上面的代码发现串口打印的数据是:
2D 2D 2D 2D 2D 2D FF 20 00 2D 2D 2D 2D 2D 2D 0A 2D 2D 2D 2D 2D 2D FF 20 00 2D 2D 2D 2D 2D 2D 0A 2D 2D 2D 2D 2D 2D FF 20 00 2D 2D 2D 2D 2D 2D 0A 2D 2D 2D 2D 2D 2D FF 20 00 2D 2D 2D 2D 2D 2D 0A

WKTCH值为FF,0xaa的值为00;请问我该如何判断?

附件是我最小项目,谢谢!

test.zip

70.37 KB, 下载次数: 58

该用户从未签到

5

主题

21

回帖

112

积分

注册会员

积分
112
发表于 2023-2-15 13:03:37 | 显示全部楼层

请问能否看看这个帖子我的问题。谢谢

该用户从未签到

46

主题

2929

回帖

6591

积分

超级版主

积分
6591
发表于 2023-2-15 16:11:12 | 显示全部楼层
WKTCH 和 WKTCL 是特殊功能寄存器,直接读取即可。
比如:i=WKTCH;j = WKTCL;

该用户从未签到

5

主题

21

回帖

112

积分

注册会员

积分
112
发表于 2023-2-16 09:19:17 | 显示全部楼层
梁工 发表于 2023-2-15 16:11
WKTCH 和 WKTCL 是特殊功能寄存器,直接读取即可。
比如:i=WKTCH;j = WKTCL;

我试试,你的意思是我创建两个变量:
u8 i,j;
然后进行这个赋值,然后我和我设置的初始原址进行比较,如果小于,则代表是由其他进行的唤醒,如果等于代表是由这个掉电唤醒定时器进行的唤醒。
1. 是这样的意思吗?
2. 有没有专门的寄存器告诉我触发唤醒源是哪个呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2024-5-1 16:03 , Processed in 0.071012 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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