标题:
stm8s单片机停机模式无法降低电流?
[打印本页]
作者:
Arouw
时间:
2022-11-23 18:28
标题:
stm8s单片机停机模式无法降低电流?
各位大佬好,最近在做一个stm8s驱动灯板的项目,用到了锂电池,可以进行充电。但在测试阶段发现电池掉电特别快,17h掉了0.6V,而驱动灯板至少需要2.7V,根本无法满足需求。所以加了一个进入停机模式的代码,可是发现没有得到改善。
今天测试了一下待机电流,发现竟然有6.5mA这么高!难怪根本存不住电,实在是太离谱了。
我用的是stm8s001,因为涉及到swim烧写口与IO口复用的问题,所以在main()里执行其他函数之前加了一句
Delay(1000); //延时
方便进行烧录程序,因为在测试阶段所以这句代码也没有删掉。运用万用表测试时发现,初始上电,电流1mA,延时结束后初始化IO口初始化一堆函数后就变成了6.5mA。在关闭led灯板执行停机代码后,待机电流也是1mA,但很快也是经过几秒(推测是过了延时)就又变成了6.5mA。
查询了网上相关资料也没有找到合适的解决方法,百思不得其解,不知道到底是哪里出了问题,恳请各位大佬指教!
单片机源程序如下:
//***************主函数**********************//
void main(void)
{
Delay(5000);
///*上电复位后延时5s,预约swim烧写时间,否则会锁死*///
_asm("sim"); //关总中断
Res_Ctrl(); //复位
GPIO_init();//IO配置
SysClkInit();//时钟配置
EXTI_Init();//外部中断配置
_asm("rim"); //开总中断
while(1)
{
}
}
复制代码
作者:
Arouw
时间:
2022-11-23 18:32
/***********************************************************
函 数 名: Key1_Working & Key2_Working
函数描述: 开机控制按键配置
备 注: 1、KEY1按键情况执行:
1)开机,高档亮度;
2)中档亮度;
3)爆闪SOS;
4)关机;
本函数在外部中断中执行,识别到按键按下才会执行相关挡位 。
***********************************************************/
void Key1_Working(void)
{
switch(Key1_Flag)
{
case 1://开机,高档亮度;
LED_PWM(1);
Flag=1; //开关机标志位为1
break;
case 2://中档亮度;
LED_PWM(2);
break;
case 3://爆闪SOS;
LED_PWM(3);
break;
case 4:
LED_PWM(4);
Key1_Flag = 0; //按键计数为0
Flag = 0 ; //开关机标志位为0
_asm("HALT");
break;
default: break;
}
}
复制代码
作者:
Arouw
时间:
2022-11-24 08:38
求各位大佬指点一下,刚刚我又看了一下,17h掉电了0.17V,虽然已经降低了但是还是无法满足正常使用的需求,实在不知道该怎么改了。
作者:
Arouw
时间:
2022-11-24 14:34
各位好,这个问题已经解决了。原来需要将
_asm("HALT");
这句加在main函数里,我选择了在其他函数初始化之后进入停机模式,这样待机电流可以降低至0.1mA甚至0.03mA。然后我又加了一句
FLASH_CR1 |= 0x80;
这样FLASH就可以在停机模式下不掉电了。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1