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]; //输出低驱动
- 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_();
- }
- }
复制代码
|