chineseboyzxy 发表于 2024-9-29 09:14

STC8H1K08-QFN待机问题,请高手指点

本帖最后由 chineseboyzxy 于 2024-9-29 09:17 编辑

板上只焊单片机时,待机电流用47表测12uA,手册上写的好像是不到1uA。还有一个奇怪的现象,用串口板3.3V供电,按开关键可以正常开机或关机(待机),LED正常亮灭。用电池供电时,上电的时候LED是灭的,按开关键就亮了,这也正常,但是再按开关键,按下去LED灭了,松开按键,又亮了。程序就那一点点,怎么看也找不出是哪里的问题。还请高手指点迷津。



//*****************************************主程序*****
void main()
{
      RSTCFG=0;//关闭低压复位
      P1IE=0;
      P3IE=0x80;
      P5IE=0;    //关闭数字输入,除按键P37
      P3M1=0x7f; //按键P37双向其他高阻
      INTCLKO=0x20;
      EA=1;
      PCON=0x02;//-----MCU进入掉电模式
      _nop_();
      _nop_();
      mcuint();


      while (1)
      {
                while (PWR==0)
                        {
                        LED=1;
                        while(PWR==0);
                        for (i=0; i<1000; i++);
                        while(PWR==0);
                        P1IE=0x08;
                        P3IE=0x80;
                        P5IE=0;
                        AEN=0;
                        RFEN=0;
                        P1M1=0xf7;
                        P3M1=0x7f;
                        P5M1=0xff;
                        EA=1;
                        PCON=0x02;//MCU进入掉电模式
                        _nop_();
                        _nop_();
                        mcuint();
                        while(PWR==0);
                        for (i=0; i<1000; i++);
                        while(PWR==0);
                        }

}




LcwSwust 发表于 2024-9-29 13:37

使能了中断但没写中断服务函数?

wang369 发表于 2024-9-29 15:21

按键消抖,中断,上下拉电阻?基本就这几个问题

coody 发表于 2024-9-29 16:15

一般是按键没有消抖导致的,中断响应式很快的。
MCU睡眠时电流不到1uA的,一般是0.6uA左右。

STC Mcu睡眠时IO不耗电的处理方法:

1、对于设置为准双向口、推挽输出、开漏输出低电平的IO,IO本身不耗电,输出电平与外部电路配合成外部电路不耗电的方式即可。

2、设置为高阻或开漏输出高电平的IO,如果悬空,则会因为输入状态不确定导致有电流,以下两种方式任选一种:
    A、IO口接一个确定的高电平(电压高于VDD-0.3)或低电平(电压低于0.3V),否则耗电。
    B、将IO口对应的数字输入功能关闭(对于STC8系列、STC32系列)。
       比如关闭P1.0、P1.1的数字输入:
         P_SW2 |= 0x80;   //允许操作扩展寄存器
         P1IE   = ~0x03;//将P1.0 P1.1的数字输入功能关闭

3、睡眠前,禁止ADC(如果已经允许的话),禁止模拟比较器(如果已经允许的话)。

4、在主程序进入睡眠,睡眠后至少要加3个空操作(NOP)。
   PCON |= 0x02;
   _nop_();
   _nop_();
   _nop_();

STCMCUNT015 发表于 2024-9-29 17:04


R1/R2 用10K,肯定影响通信,直接短路

捉虫天师 发表于 2024-9-29 17:09

IO引脚配置好没。

chineseboyzxy 发表于 2024-9-29 17:19

LcwSwust 发表于 2024-9-29 13:37
使能了中断但没写中断服务函数?

中断服务有,只有一条LED=0的指令。

chineseboyzxy 发表于 2024-9-29 17:21

STCMCUNT015 发表于 2024-9-29 17:04
R1/R2 用10K,肯定影响通信,直接短路

这个是失误了,原理图忘了改,实际用的是33R的。

chineseboyzxy 发表于 2024-9-29 17:24

wang369 发表于 2024-9-29 15:21
按键消抖,中断,上下拉电阻?基本就这几个问题

按键加10K上拉试了,也不行。不说有没有消抖,关键是用串口板供电就一切正常,换电池就不行,想不明白啥道理,无从下手呀。那程序里开机上电直接就休眠了,再下来就是按一下开机,再按一下开机,就这么点功能。

chineseboyzxy 发表于 2024-9-29 20:04

本帖最后由 chineseboyzxy 于 2024-9-29 20:05 编辑

wang369 发表于 2024-9-29 15:21
按键消抖,中断,上下拉电阻?基本就这几个问题
这样按键消抖行不行?我试了一下,差不多能正常关掉了。
while(PWR==0);
for (i=0; i<10000; i++);
while(PWR==0);
for (i=0; i<10000; i++);
while(PWR==0);
for (i=0; i<10000; i++);

xionghaoyun 发表于 2024-9-30 09:04

消抖?

chineseboyzxy 发表于 2024-9-30 16:04

xionghaoyun 发表于 2024-9-30 09:04
消抖?

是的,按键消抖,这样可以吗?有没有更稳定的方法。
页: [1]
查看完整版本: STC8H1K08-QFN待机问题,请高手指点