找回密码
 立即注册
查看: 116|回复: 7

定时器掉电唤醒请教

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-02-03 12:07:39
已绑定手机

5

主题

14

回帖

55

积分

注册会员

积分
55
发表于 2026-1-29 15:14:45 | 显示全部楼层 |阅读模式
大家好,写了个定时器掉电唤醒,唤醒后P3_7不变化,还有定时器1不工作,看看怎么回事


void Timer1_Init(void)               
{
    AUXR |= 0x40;                        // 仅置bit6=1,T1设为1T模式(不影响T0)
    TMOD &= 0x0F;                        // 清除T1的模式位(高4位),不影响T0

          TL1 = 0x66;                                 //65536-11.0592M/12/1000
    TH1 = 0xfc;
          TF1 = 0;                                // 清除溢出标志
    TR1 = 1;                                    //启动定时器
    ET1 = 1;                                    //使能定时器中断
}

//定时器1中断处理
void timer1(void) interrupt 3
{
    count1++;
       
        if(count1>100)  //添加定时进入掉电模式
{

                        _nop_();
                        _nop_();
                         //   PCON = IDL;                                 //MCU进入IDLE模式
                        PCON = PD;                                  //MCU进入掉电模式
                        _nop_();
                        _nop_();

                        TR1 = 0;
                count1=0;
                 P3_7=0;
       
}
       
}

void main()
{
          P0M0 = 0x00; P0M1 = 0x00;
          P1M0 = 0x00; P1M1 = 0x00;
          P2M0 = 0x00; P2M1 = 0x00;
          P3M0 = 0x00; P3M1 = 0x00;

    WKTCL = 0xff;
    WKTCH = 0x87;


Timer1_Init();
EA = 1;
          _nop_();
    _nop_();
    _nop_();
    _nop_();
//   PCON = IDL;                                 //MCU进入IDLE模式
    PCON = PD;                                  //MCU进入掉电模式
    _nop_();
    _nop_();
    _nop_();
    _nop_();
  P3_7=1;

        while(1)
        {}
}

回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:78
  • 最近打卡:2026-03-16 11:06:04
已绑定手机

4

主题

214

回帖

794

积分

高级会员

积分
794
发表于 2026-1-29 15:34:49 | 显示全部楼层
你用示波器还是LED来观察的?
假如定时器正常工作你能看到啥变化?
建议P3_7=0改为P3_7=~P3_7;
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:722
  • 最近打卡:2026-03-16 06:56:40
已绑定手机

97

主题

7243

回帖

1万

积分

超级版主

积分
13784
发表于 2026-1-29 15:56:58 | 显示全部楼层
进入PD状态之前需要做的:
打开需要唤醒的中断和总中断
关闭不需要唤醒的中断
清除所有使用的中断标志位
发完数据包

进入PD状态前后各加4个nop

主频接近极限频率时:
初始化正确设置IAP_TPS
初始化设置IRCDB=16
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-02-03 12:07:39
已绑定手机

5

主题

14

回帖

55

积分

注册会员

积分
55
发表于 2026-1-29 16:21:27 | 显示全部楼层
加了可以定时唤醒,不过定时器1 重新掉电,初始化和所有必要中断都打开了,还是不起作用,请问是哪里出问题
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-02-03 12:07:39
已绑定手机

5

主题

14

回帖

55

积分

注册会员

积分
55
发表于 2026-1-29 16:50:11 | 显示全部楼层
        IAP_TPS=11;
        IRCDB=16;
        WKTCL = 0xff; //设定掉电唤醒时钟约为 1 秒钟
        WKTCH = 0x87;

中断有反应了,频率11.0592,这个1秒好像不准的      
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:640
  • 最近打卡:2026-03-16 14:31:55

33

主题

2904

回帖

6527

积分

论坛元老

积分
6527
发表于 2026-1-30 10:16:14 | 显示全部楼层
haly*** 发表于 2026-1-29 16:50
IAP_TPS=11;
        IRCDB=16;
        WKTCL = 0xff; //设定掉电唤醒时钟约为 1 秒钟

掉电唤醒定时器不会太准的,,,
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:671
  • 最近打卡:2026-03-15 20:04:44

6

主题

321

回帖

2963

积分

金牌会员

积分
2963
发表于 2026-1-30 10:59:37 | 显示全部楼层
你这个程序有问题啊,不要在中断服务函数里让单片机进入掉电模式可以在里面建立一个flag,在main函数里检查这个flag是否为一,如过为一的话就清除定时器计数器和flag为零然后进入掉电模式。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-02-03 12:07:39
已绑定手机

5

主题

14

回帖

55

积分

注册会员

积分
55
发表于 2026-1-30 14:40:05 | 显示全部楼层
没用,唤醒一次后无论在定时器里面或者main里面都不会再进掉电模式
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-3-17 07:07 , Processed in 0.108227 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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