找回密码
 立即注册
查看: 241|回复: 4

临时贴求助怎么多休眠一会时间

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2024-12-2 13:37:05 | 显示全部楼层 |阅读模式
//sfr WKTCL = 0xAA;   //唤醒定时器低字节
//sfr WKTCH = 0xAB;   //唤醒定时器高字节

//========================================================================
// 函数: void   SetWakeUpTime(u16 SetTime)
// 描述: 唤醒定时器设置时间值函数。
// 参数: SetTime: 要设置的时间值(睡眠的时间), 单位为ms.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-7-15
// 备注:
//========================================================================
void    SetWakeUpTime(u16 SetTime)
{
    SetTime = (u16)((32768UL * (u32)SetTime) / 16000);  //重装值 = Fwkt/16 * SetTime/1000 = Fwkt * SetTime / 16000
    if(SetTime > 0) SetTime--;
    WKTCL = (u8)SetTime;
    WKTCH = (u8)(SetTime >> 8) | 0x80;
}

/*

SetWakeUpTime(5000);    //5秒后醒来
                                                                PCON |= 0x02;   //Sleep
*/


上面的代码只能最多休个10秒。还请给个可以休30秒  60秒的方法 。 还有就是这个需要在什么时候用(在主循环中是不是把需要做的事做完后就可以开定时器然后休眠了)。谢谢

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-12-2 13:44:53 | 显示全部楼层
看看如果单片机里有内置的RTC,用RTC的闹钟中断 那就想定多久就定多久。。

如果就只有这个掉电唤醒定时器的话,,那就只能是定一个周期,周期醒了之后计个数,然后就睡觉。计数值到达你想定时的时间之后,在去干活。

点评

赞同  详情 回复 发表于 2024-12-2 14:16
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2024-12-2 14:16:04 | 显示全部楼层
_奶*** 发表于 2024-12-2 13:44
看看如果单片机里有内置的RTC,用RTC的闹钟中断 那就想定多久就定多久。。

如果就只有这个掉电唤醒定时器 ...

赞同
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2024-12-2 14:57:51 来自手机 | 显示全部楼层
stc 32 g 12 k 128好像是有内置rtc。只是有的话怎样设置它就能。设置更长的休眠时间了呢
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2024-12-2 21:20:50 | 显示全部楼层
本帖最后由 qepuemc 于 2024-12-2 22:06 编辑

下面是我提取了可以休眠运行的代码 STC32G8K64
本来以为这样可以了。结果这样不是不能进入休眠就是不能唤醒的感觉。最怕的就是休眠后醒了就可以进入休眠了!

  1. //低功耗
  2. #include "comm\STC32G.h" //STC官方文件没做修改用的是STC32GLQFP32 32脚的芯片
  3. #define MAIN_Fosc       11059200L   //定义主时钟
  4. typedef     unsigned char   u8;
  5. typedef     unsigned int    u16;
  6. typedef     unsigned long   u32;
  7. sfr WKTCL = 0xAA;   //唤醒定时器低字节
  8. sfr WKTCH = 0xAB;   //唤醒定时器高字节
  9. /****************************** 用户定义宏 ***********************************/
  10. void    SetWakeUpTime(u16 SetTime);
  11. /********************** 主函数 ************************/
  12. void main(void)
  13. {   
  14.     P0M1 = 0;   P0M0 = 0;   //设置为准双向口
  15.     P1M1 = 0;   P1M0 = 0;   //设置为准双向口
  16.     P2M1 = 0;   P2M0 = 0;   //设置为准双向口
  17.     P3M1 = 0;   P3M0 = 0;   //设置为准双向口
  18.     P4M1 = 0;   P4M0 = 0;   //设置为准双向口
  19.     P5M1 = 0;   P5M0 = 0;   //设置为准双向口
  20.     P6M1 = 0;   P6M0 = 0;   //设置为准双向口
  21.     P7M1 = 0;   P7M0 = 0;   //设置为准双向口
  22.    
  23.     EA = 1;     //允许总中断
  24.     while(1)
  25.     {
  26.                         SetWakeUpTime(5000);    //2秒后醒来
  27.                                                                 PCON |= 0x02;   //Sleep        
  28.     }
  29. }
  30. //========================================================================
  31. // 函数: void   SetWakeUpTime(u16 SetTime)
  32. // 描述: 唤醒定时器设置时间值函数。
  33. // 参数: SetTime: 要设置的时间值(睡眠的时间), 单位为ms.
  34. // 返回: none.
  35. // 版本: VER1.0
  36. // 日期: 2014-7-15
  37. // 备注:
  38. //========================================================================
  39. void    SetWakeUpTime(u16 SetTime)
  40. {
  41.     SetTime = (u16)((32768UL * (u32)SetTime) / 16000);  //重装值 = Fwkt/16 * SetTime/1000 = Fwkt * SetTime / 16000
  42.     if(SetTime > 0) SetTime--;
  43.     WKTCL = (u8)SetTime;
  44.     WKTCH = (u8)(SetTime >> 8) | 0x80;
  45. }
复制代码


回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:26 , Processed in 0.162611 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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