QQ334911390 发表于 2023-10-31 11:04:49

请教休眠问题 | 已解决

大家好,请教下:
1.所用IC型号: STC8H3K64S2;
2.问题点:引脚唤醒,高电平或低电平唤醒;
3.硬件唤醒使用引脚:P1.2,正常工作时此引脚用作ADC功能;
因电路设计P1.2引脚除用作ADC功能外,在程序休眠后还需用作休眠唤醒;因型号限制,此脚不能用外中断唤醒休眠,只能用T2唤醒,所以我在写了一段程序,但引脚不具备唤醒功能,请各位老师帮忙看看,谢谢。

//因之前P1.2用作AD,所以在休眠前设为准双向口并置为高电平;
P1n_standard(2);
P12 = 1;

//Time2已用作串口2作为波特率发生器且一切工作正常;这里用两个官方库函数停止后再使能Timer2中断;
Timer2_Stop();
Timer2_InterruptEnable();
EA   = 1; //初始化时已开,这里再开一次;

PCON = 0x02;//进入休眠;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

//这里用两个官方库函数,先开启计数,再禁止中断;
Timer2_Run();
Timer2_InterruptDisable();

//提供中断入口,程序不跑飞;
void timer2_int (void) interrupt 12
{

}

QQ334911390 发表于 2023-10-31 11:05:29

神农鼎 发表于 2023-10-31 11:26:48

STC8H3K系列 普通I/O 脚可以高电平或者低电平唤醒





神农鼎 发表于 2023-10-31 11:28:04





【新提醒】所有普通I/O口都支持外部中断的演示程序,STC8系列、STC32系列, 中断号37~44 - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

QQ334911390 发表于 2023-10-31 11:44:48

支持 PCON = 0x02 的唤醒吗,我看手册 没有说唤醒功能

QQ334911390 发表于 2023-10-31 11:45:53

例程也没有唤醒。我主要是要唤醒

QQ334911390 发表于 2023-10-31 11:51:17

主要就是要P1.2 唤醒 PCON = 0x02

乘风飞扬 发表于 2023-11-1 11:47:31

我用库函数例程包里的串口收发例子测了一下,没什么问题。
按照你的方式串口1使用定时器2作为波特率发生器,休眠前开启定时器2中断,唤醒后关闭中断
      delay_ms(100);
      printf("MCU Sleep!\r\n");
      P1_MODE_IO_PU(GPIO_Pin_2);
      Timer2_Stop();
      Timer2_Interrupt(ENABLE);
      PCON = 0x02;//进入休眠;
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      _nop_();
      P1_MODE_IN_HIZ(GPIO_Pin_2);
      Timer2_Run(ENABLE);
      Timer2_Interrupt(DISABLE);
      printf("MCU Wakeup!\r\n");通过拉低P1.2口可以唤醒MCU

附件是我的测试程序,请参考。

QQ334911390 发表于 2023-11-1 13:46:42

本帖最后由 QQ334911390 于 2023-11-1 14:20 编辑

可以的,谢谢
页: [1]
查看完整版本: 请教休眠问题 | 已解决