找回密码
 立即注册
楼主: wuzhengmin

学习休眠唤醒遇到的问题:1无法开启休眠 2舍弃一下功能后能进入休眠但无法唤醒

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 10:37:20 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 10:38:10 | 显示全部楼层
乘风*** 发表于 2026-2-26 10:19
参考这个帖子:

8H8K64U 使用 USB-CDC 不能进入掉电模式,如何解决?

谢谢啦,我好好学习一下!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 12:46:16 | 显示全部楼层


在各位大侠指导下,有进展:
   
  乘风***大侠还给了以前网友的贴子,还有例子程序:


我跟着改了一下:


         
  1. if(++SleepDelay >= 5)   //5秒后休眠
  2.             {
  3.                 SleepDelay = 0;
  4.                                 ioIndex = 0 ;
  5.                 if(INT0 && INT1)    //两个中断都是高电平时才进入休眠,下降沿唤醒。
  6.                 {
  7.                                                 SleepDelay = 0;
  8.                                                 TM1638Off();  //关闭TM1638显示,省电
  9.                                                 IE0  = 0;       //外中断0标志位
  10.                                                 IE1  = 0;       //外中断1标志位
  11.                                                 EX0 = 1;        //INT0 Enable
  12.                                                 EX1 = 1;        //INT1 Enable
  13.                                                 IT0 = 1;        //INT0 下降沿中断      
  14.                                                 //  IT0 = 0;        //INT0 上升,下降沿中断  
  15.                                                 IT1 = 1;        //INT1 下降沿中断      
  16.                                                 //  IT1 = 0;        //INT1 上升,下降沿中断  
  17.                                                 //  EX2 = 1;        //使能 INT2 下降沿中断
  18.                                                 //  EX3 = 1;        //使能 INT3 下降沿中断
  19.                                                 //  EX4 = 1;        //使能 INT4 下降沿中断
  20.                                                 printf_usb("MCU Sleep.\r\n");//printf_usb能在串口助手打印出来
  21.                                                 delay_ms(1);    //延时1ms,保证MCU Sleep.能传输的到串口
  22.                                                 usb_uninit();
  23.                                                 PD = 1;     //Sleep成功进入,但不能唤醒
  24.                                                 _nop_();
  25.                                                 _nop_();
  26.                                                 _nop_();
  27.                                                 _nop_();
  28.                                                 _nop_();
  29.                                                 _nop_();
  30.                                                 _nop_();
  31.                                                 _nop_();
  32.                                                
  33.                                                 P3IE = 0xFF; //恢复数字输入
  34.                                                 usb_init();
  35.                                                 TM1638OPEN();   //打开TM1638
  36.                                                 printf_usb("MCU wakeup from P%02X.\r\n", ioIndex);       
  37.                 }
  38.             }
复制代码


结果如下:1 顺利的进入休眠,同时TM1638Off()也顺利执行,数码管关闭了


但是不能唤醒,检查P32 P33 的电平,是高电平............


继续查找问题.....................
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 17:57:11 | 显示全部楼层
先把理论搞清楚,复习一下:

跟着普中科技看一下视频课程:

https://www.bilibili.com/video/B ... d.episodes&p=78
截图202602261756559427.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:01:10 | 显示全部楼层
首先是相关寄存器:

截图202602261800204013.jpg
截图202602261801003519.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:04:25 | 显示全部楼层
我们先学习省点模式:

PD:主时钟停振/省电模式控制位
0:无影响
1:单片机进入主时钟停振/省电模式,CPU以及全部外设均停止工作。唤醒后硬件自动清零。
注:
省电模式/主时钟停振模式,俗称掉电模式
仅主时钟停止振荡,依赖主时钟工作的CPU/及大部分外设功能模块,无时钟无法继续工作,耗电的这部分功能模块工作被暂停后,MCU 几乎没有功耗。
不依赖主时钟工作的低功耗外设可继续工作,如:
RTC 如选择的是外部 32768RTC 晶振,RTC 会继续正常工作,RTC工作,仅需要1.5uA 的电流。
段码LCD,如需要继续工作,功耗也极低,不含屏的功耗,也仅需1.5uA.

另外一个模式只停CPU:

IDL:IDLE(空闲)模式控制位
0:无影响
1:单片机进入IDLE模式,只有CPU停止工作,其他外设依然在运行。唤醒后硬件自动清零
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:07:28 | 显示全部楼层
有提醒哦:

【特别注意】
Ai8051U系列单片机进入主时钟停振/省电模式前,必须根据工作频率正确设置IAP_TPS寄存器
(若工作频率为12MHz,则需要将IAP-TPS设置为12;若工作频率为24MHz,则需要将IAP-TPS设置为24,其他频率以此类推)。
单片机从主时钟停振/省电模式唤醒后,硬件会自动对主时钟恢复起振,当主时钟开始起振后,硬件会自动等待一定的主时钟震荡周期数,这个等待的主时钟震荡周期数由IRCDB寄存器进行设置,直到主时钟最后稳定。主时钟稳定后,在开始运行用户程序前,还需要对内部的FLASH程序存储器进行唤醒,FLASH唤醒的等待时间基准是1us,要产生1us的时间基准,软件必须根据主时钟的工作频率正确设置IAP_TPS寄存器。
强烈建议用户在进行系统初始化时对IAP_TPS进行初始化。

唤醒源:

截图202602261807255271.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:15:59 | 显示全部楼层
普中科技本次视频的实验:

可以偷懒直接用AiCube:

P2.0设置为推完输出 使能上啦电阻

P3.2设置为高阻输入,使能上啦电阻,IO中断允许且下降沿  使能STOP 唤醒


截图202602261809429590.jpg
截图202602261811141159.jpg
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:22:31 | 显示全部楼层
记得使能CLK时钟,P2 P3管脚

LED是在P2口

按键是在P3口

P3.2  高阻输入模式  使能上拉电阻  I/O口中断选择下降沿 ,使能STOP唤醒

P3.2  高阻输入模式  使能上拉电阻  I/O口中断选择下降沿 ,使能STOP唤醒

P3.2  高阻输入模式  使能上拉电阻  I/O口中断选择下降沿 ,使能STOP唤醒
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:158
  • 最近打卡:2026-04-08 10:46:34
已绑定手机

22

主题

2458

回帖

3488

积分

论坛元老

积分
3488
发表于 2026-2-26 18:46:13 | 显示全部楼层
函数很简洁

i%50 == 0 的意思是500个ms

因为转1圈就是10ms

之前要宏定义:

//<<AICUBE USER GLOBAL DEFINE BEGIN>>
//在此添加用户全局变量定义、用户宏定义以及函数声明
#define LED1  P20
//<<AICUBE_USER_GLOBAL_DEFINE_END>>
截图202602261843104841.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-9 23:42 , Processed in 0.113044 second(s), 82 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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