外部中断0接了一个轻触按键到地,程序进入空闲后打开外部中0下降沿唤醒功能并进入掉电模式。
电压高于3V时,没问题,低于3V时,有时需要按3-5次能唤醒一次,大部分无法正常唤醒。
以下是该新款STC MCU的简介:

正好我近期也拿了10片ST8G1K08 TSSOP20测试,下载程序时允许低压复位,则MCU在2.0~5.5V唤醒均正常,下载程序时禁止低压复位,则MCU在1.8~5.5V唤醒均正常,没有碰到楼主的情况。
我测试的代码,希望对楼主和大家有参考:
#define MAIN_Fosc 11059200L //定义主时钟
#include "..\..\STC8Gxxx.h"
/************* 功能说明 **************
演示INT0下降沿唤醒MCU。
唤醒后P1.0电量LED指示.
******************************************/
void delay_ms(u8 ms);
void main(void)
{
P1n_standard(0xff); //P1口设置为准双向口
P3n_standard(0xff); //P3口设置为准双向口
P5n_standard(0x30); //P5.4 P5.5口设置为准双向口
EA = 1; //Enable all interrupt
while(1)
{
P10 = 0; //取反指示引脚
delay_ms(50); //delay 20ms, 相当于去抖动 (按用户程序需要)
P10 = 1; //取反指示引脚
while(!INT0); //等待外中断为高电平 (按用户程序需要)
delay_ms(20); //delay 20ms, 相当于去抖动 (按用户程序需要)
IT0 = 1; //INT0 下降沿中断
IE0 = 0; //清除外中断0标志位
_nop_();
_nop_();
EX0 = 1; //INT0 允许中断
_nop_();
_nop_();
PCON |= 0x02; //Sleep
_nop_();
_nop_();
_nop_();
EX0 = 0; //INT0 禁止中断 (按用户程序需要)
}
}
/********************* INT0中断函数 *************************/
void INT0_int (void) interrupt 0 //进中断时已经清除标志
{
}
//========================================================================
// 函数: void delay_ms(u8 ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数.
// 返回: none.
// 版本: VER1.0
// 日期: 2020-3-25
// 备注:
//========================================================================
void delay_ms(u8 ms)
{
u16 i;
do
{
i = MAIN_Fosc / 10000L;
while(--i) ;
}while(--ms);
}
我要赚赏金打赏帖 |
|
|---|---|
| OK1126B-S开发板下函数构建及步进电机驱动控制被打赏¥25元 | |
| 【S32K3XX】LPI2C 参数配置说明被打赏¥20元 | |
| OK1126B-S开发板的脚本编程及应用设计被打赏¥27元 | |
| 5v升压8.4v两节锂电池充电芯片,针对同步和异步的IC测试被打赏¥35元 | |
| 【S32K3XX】S32DS LPI2C 配置失败问题解决被打赏¥22元 | |
| 【S32K3XX】FLASH 的 DID 保护机制被打赏¥19元 | |
| OK1126B-S开发板串口通信及其使用被打赏¥18元 | |
| 【S32K3XX】多核 CORE ID 获取被打赏¥18元 | |
| OK1126B-S开发板的GPIO资源及其使用被打赏¥20元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动屏幕(Arduino IDE环境)被打赏¥23元 | |