找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1022|回復(fù): 3
收起左側(cè)

stm8s單片機停機模式無法降低電流?

[復(fù)制鏈接]
回帖獎勵 50 黑幣 回復(fù)本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:1047058 發(fā)表于 2022-11-23 18:28 | 顯示全部樓層 |閱讀模式
各位大佬好,最近在做一個stm8s驅(qū)動燈板的項目,用到了鋰電池,可以進行充電。但在測試階段發(fā)現(xiàn)電池掉電特別快,17h掉了0.6V,而驅(qū)動燈板至少需要2.7V,根本無法滿足需求。所以加了一個進入停機模式的代碼,可是發(fā)現(xiàn)沒有得到改善。
今天測試了一下待機電流,發(fā)現(xiàn)竟然有6.5mA這么高!難怪根本存不住電,實在是太離譜了。
我用的是stm8s001,因為涉及到swim燒寫口與IO口復(fù)用的問題,所以在main()里執(zhí)行其他函數(shù)之前加了一句
Delay(1000);          //延時

方便進行燒錄程序,因為在測試階段所以這句代碼也沒有刪掉。運用萬用表測試時發(fā)現(xiàn),初始上電,電流1mA,延時結(jié)束后初始化IO口初始化一堆函數(shù)后就變成了6.5mA。在關(guān)閉led燈板執(zhí)行停機代碼后,待機電流也是1mA,但很快也是經(jīng)過幾秒(推測是過了延時)就又變成了6.5mA。

查詢了網(wǎng)上相關(guān)資料也沒有找到合適的解決方法,百思不得其解,不知道到底是哪里出了問題,懇請各位大佬指教!

單片機源程序如下:
  1. //***************主函數(shù)**********************//
  2.         void main(void)
  3. {
  4.                 Delay(5000);
  5.                 ///*上電復(fù)位后延時5s,預(yù)約swim燒寫時間,否則會鎖死*///

  6.                 _asm("sim");        //關(guān)總中斷
  7.                 Res_Ctrl(); //復(fù)位
  8.                 GPIO_init();//IO配置
  9.                 SysClkInit();//時鐘配置
  10.                 EXTI_Init();//外部中斷配置
  11.                 _asm("rim");        //開總中斷
  12.                 while(1)
  13.                 {
  14.                 }
  15.         }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:1047058 發(fā)表于 2022-11-23 18:32 | 顯示全部樓層

  1.         /***********************************************************
  2.         函 數(shù) 名:        Key1_Working & Key2_Working
  3.         函數(shù)描述:  開機控制按鍵配置
  4.         備    注:  1、KEY1按鍵情況執(zhí)行:
  5.                                         1)開機,高檔亮度;
  6.                                         2)中檔亮度;
  7.                                         3)爆閃SOS;
  8.                                         4)關(guān)機;
  9.         本函數(shù)在外部中斷中執(zhí)行,識別到按鍵按下才會執(zhí)行相關(guān)擋位        。
  10.         ***********************************************************/
  11.         void Key1_Working(void)
  12.         {
  13.                 switch(Key1_Flag)
  14.                         {       
  15.                                 case 1://開機,高檔亮度;
  16.                                         LED_PWM(1);
  17.                                         Flag=1;        //開關(guān)機標(biāo)志位為1
  18.                                 break;
  19.                                
  20.                                 case 2://中檔亮度;
  21.                                         LED_PWM(2);
  22.                                 break;
  23.                                
  24.                                 case 3://爆閃SOS;                       
  25.                                         LED_PWM(3);
  26.                                 break;
  27.                                
  28.                                 case 4:
  29.                                         LED_PWM(4);
  30.                                                 Key1_Flag = 0;        //按鍵計數(shù)為0
  31.                                                 Flag = 0 ;        //開關(guān)機標(biāo)志位為0
  32.                                                 _asm("HALT");
  33.                                 break;
  34.                                
  35.                         default: break;       
  36.                         }
  37.         }
復(fù)制代碼
回復(fù)

使用道具 舉報

ID:1047058 發(fā)表于 2022-11-24 08:38 | 顯示全部樓層
求各位大佬指點一下,剛剛我又看了一下,17h掉電了0.17V,雖然已經(jīng)降低了但是還是無法滿足正常使用的需求,實在不知道該怎么改了。
回復(fù)

使用道具 舉報

ID:1047058 發(fā)表于 2022-11-24 14:34 | 顯示全部樓層
各位好,這個問題已經(jīng)解決了。原來需要將_asm("HALT");這句加在main函數(shù)里,我選擇了在其他函數(shù)初始化之后進入停機模式,這樣待機電流可以降低至0.1mA甚至0.03mA。然后我又加了一句FLASH_CR1 |= 0x80; 這樣FLASH就可以在停機模式下不掉電了。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表