STC的掉电唤醒定时器设计很独特
STC的掉电唤醒定时器设计很独特:不用进入中断程序,就可以掉电唤醒了。
特别适合用于低功耗电路。
如果对时间要求不高,可以直接作为时基信号。
最长定时达15.89S,无需再设,直接进入循环状态。
像STC15F104W居然也具备这个功能。
使用超简单。
问题是这个16秒太短了,想搞个半小时怎么办呢? 那就唤醒后计数,未到时间立即再进低功耗,
或者用有 RTC 的 STC8H8K64U 系列
神农鼎 发表于 2023-1-5 10:19
那就唤醒后计数,未到时间立即再进低功耗,或者用有 RTC 的 STC8H8K64U系列
...
我觉得您说的唤醒后立即又进入掉电,循环若干次,这样可行。 基本都是这样,平均电流也就增加个 0.1uA 附近 本帖最后由 wsr2580 于 2023-2-14 16:26 编辑
大家好,我也在搜索这个信息,但是我没有实现这个需求。
我的产品用的单片机是STC8G1k08,因为我有多个唤醒源唤醒这个单片机,每个唤醒源都执行不同的行为。因为我所用的其他唤醒源都可以进入中断改变状态,而这个不行。
我现在的问题是,如何知道确实是掉电唤醒定时器进行的唤醒,在文档中提到:
掉电唤醒之后,可以通过读 WKTCH 和 WKTCL 中的内容获取单片机在掉电模式中的睡眠时间。
但是,我该怎么读取这个值呢?
c = 0xaa;
printf("------%c %c------\n", WKTCH, *c);
c = 0xab;
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;请问我该如何判断?
附件是我最小项目,谢谢!
神农鼎 发表于 2023-1-5 10:21
请问能否看看这个帖子我的问题。谢谢 WKTCH 和 WKTCL 是特殊功能寄存器,直接读取即可。
比如:i=WKTCH;j = WKTCL; 梁工 发表于 2023-2-15 16:11
WKTCH 和 WKTCL 是特殊功能寄存器,直接读取即可。
比如:i=WKTCH;j = WKTCL;
我试试,你的意思是我创建两个变量:
u8 i,j;
然后进行这个赋值,然后我和我设置的初始原址进行比较,如果小于,则代表是由其他进行的唤醒,如果等于代表是由这个掉电唤醒定时器进行的唤醒。
1. 是这样的意思吗?
2. 有没有专门的寄存器告诉我触发唤醒源是哪个呢?