- 打卡等级:常住居民III
- 打卡总天数:141
- 最近打卡:2026-03-06 09:40:40
已绑定手机
论坛元老
- 积分
- 3509
|
发表于 2026-2-25 21:44:59
|
显示全部楼层
我先把整个项目文件打包上来:
环境是STC追风剑+LM1638数码管+LED+按键
之所以翻LM1638数码管+LED+按键模块出来,主要是STC32G144K246的INT0 INT1休眠唤醒 是在数码管显示5秒后休眠,按P32(INT0)后唤醒,5秒后又休眠...........
对照一下:
if(++SleepDelay >= 20) //20秒后休眠
{
SleepDelay = 0;
ioIndex = 0 ;
if(INT0 && INT1) //两个中断都是高电平时才进入休眠,下降沿唤醒。
{
SleepDelay = 0;
TM1638Off(); //关闭TM1638显示,省电
IT0 = 1; //INT0 下降沿中断
// IT0 = 0; //INT0 上升,下降沿中断
IT1 = 1; //INT1 下降沿中断
// IT1 = 0; //INT1 上升,下降沿中断
IE0 = 0; //外中断0标志位
IE1 = 0; //外中断1标志位
EX0 = 1; //INT0 Enable
EX1 = 1; //INT1 Enable
// EX2 = 1; //使能 INT2 下降沿中断
// EX3 = 1; //使能 INT3 下降沿中断
// EX4 = 1; //使能 INT4 下降沿中断
printf("MCU Sleep.\r\n");
PD = 1; //Sleep
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TM1638OPEN(); //打开TM1638
printf("MCU wakeup from P%02X.\r\n", ioIndex);
}
}
}
|
|