示例中的程序,比较器唤醒MCU好像有点问题。
81-内部RTC时钟低功耗休眠唤醒-比较器检测电压程序测试休眠后无法唤醒,有外部低速晶振。
// P35 = 1; //不比较时,对外设置为1,I/O口浮空,省电
把IO浮空注释掉就可以正常唤醒
原理图是这样画的,基本于示例图一样
//========================================================================
// 函数: void Ext_Vcc_Det(void)
// 描述: 外部电源检测函数。
// 参数: 无.
// 返回: 无.
// 版本: V1.0, 2022-10-10
//========================================================================
void Ext_Vcc_Det(void)
{
P35 = 0; //比较时,对外输出0,做比较电路的地线
CMPEN = 1; //使能比较器模块
_nop_();
_nop_();
_nop_();
if(CMPRES) //判断是否CMP+电平高于CMP-,外部电源连接
{
printf("外部电源连接\r\n");
P40 = 0; //LED Power On
P6 = ~ledNum; //输出低驱动
ledIndex++;
if(ledIndex > 7)
{
ledIndex = 0;
}
}
else
{
printf("休眠\r\n");
CMPEN = 0; //关闭比较器模块
// P35 = 1; //不比较时,对外设置为1,I/O口浮空,省电
P40 = 1; //LED Power Off
_nop_();
_nop_();
PCON = 0x02;//STC32G 芯片使用内部32K时钟,休眠无法唤醒
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
页:
[1]