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);
}
}
使能了中断但没写中断服务函数? 按键消抖,中断,上下拉电阻?基本就这几个问题 一般是按键没有消抖导致的,中断响应式很快的。
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_();
R1/R2 用10K,肯定影响通信,直接短路
IO引脚配置好没。 LcwSwust 发表于 2024-9-29 13:37
使能了中断但没写中断服务函数?
中断服务有,只有一条LED=0的指令。 STCMCUNT015 发表于 2024-9-29 17:04
R1/R2 用10K,肯定影响通信,直接短路
这个是失误了,原理图忘了改,实际用的是33R的。 wang369 发表于 2024-9-29 15:21
按键消抖,中断,上下拉电阻?基本就这几个问题
按键加10K上拉试了,也不行。不说有没有消抖,关键是用串口板供电就一切正常,换电池就不行,想不明白啥道理,无从下手呀。那程序里开机上电直接就休眠了,再下来就是按一下开机,再按一下开机,就这么点功能。 本帖最后由 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
消抖?
是的,按键消抖,这样可以吗?有没有更稳定的方法。
页:
[1]