打印
[STM8]

关于STM8S003的超低功耗

[复制链接]
3213|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梦幻泡影|  楼主 | 2017-2-20 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调STM8S003芯片的时候,进到halt模式,待机电流居然有2.3mA,完全不符合逻辑,弄了几天也没有啥进展,不知哪位大神来帮我解答一下。我的时钟配置是这样的:
void init_sys_clk(void)
{
       
        bool ButtonPressed = FALSE;
        ErrorStatus clk_return_status;
        CLK_DeInit();
       
        CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV2);
        nextsss:               
        clk_return_status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, ENABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
       
        if (clk_return_status == SUCCESS)  //SUCCESS or ERROR
        ;
        else
        goto nextsss;         
}
没有使用到的管脚全部配置为浮动输入无中断:
void init_sys_port(void)
{
        //PART A
        GPIO_DeInit(GPIOA);
       
        GPIO_Init(GPIOA, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
        GPIO_Init(GPIOA, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);
        GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
       
        //PART B
        GPIO_DeInit(GPIOB);
        GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST); //LED
       
        GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_IN_FL_NO_IT);
  
        //PART C
        GPIO_DeInit(GPIOC);
        GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_LOW_FAST);  //MOTO+
        GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_IT);        //Key
        GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_IN_FL_IT);          //GPIO        GPIO_MODE_IN_PU_IT
       
        GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);
        GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT);
       
       
        //PART D
        GPIO_DeInit(GPIOD);
        GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_OUT_PP_LOW_FAST);  //MOTO-
        GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);  //csc  GPIO_MODE_OUT_OD_HIZ_FAST
        GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST);  //CLK
        GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST);  //SDIO
       
        GPIO_Init(GPIOD, GPIO_PIN_1, GPIO_MODE_IN_FL_NO_IT);
       
        GPIO_ExternalPullUpConfig(GPIOB, GPIO_PIN_5, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_7, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_4, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOC, GPIO_PIN_6, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_6, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_5, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_3, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_2, ENABLE);
        GPIO_ExternalPullUpConfig(GPIOD, GPIO_PIN_1, ENABLE);
       
        GPIO_WriteHigh(GPIOC, GPIO_PIN_7); //moto+
        GPIO_WriteHigh(GPIOD, GPIO_PIN_6); //moto-
        GPIO_WriteHigh(GPIOC, GPIO_PIN_6); //key
        GPIO_WriteHigh(GPIOB, GPIO_PIN_5); //led
       
        //RF IO 初始化
        GPIO_WriteHigh(GPIOC, GPIO_PIN_4);   //GPIO1
        GPIO_WriteHigh(GPIOD, GPIO_PIN_2);   //SDIO
        GPIO_WriteHigh(GPIOD, GPIO_PIN_3);   //SCLK
        GPIO_WriteHigh(GPIOD, GPIO_PIN_5);   //SCS
       
}
实在想不出该怎么做了
沙发
cailantu| | 2017-2-20 11:45 | 只看该作者
查一下是否是板子漏电;然后,看ADC这些是否有启用,有的话,也是需要DeInit的;管脚外部电路看是否有存在上拉下拉的不正确导致了电动势方面的漏电,等等。。。

使用特权

评论回复
板凳
mmuuss586| | 2017-2-20 13:19 | 只看该作者
除了楼上说的;
1、配置前后有没有变化呢,没变化说明没成功;
2、电流怎么测试的呢?

使用特权

评论回复
地板
weidni2009| | 2017-2-20 13:44 | 只看该作者
还有2.3mA,先看看进入睡眠模式时和睡眠模式后的电流变化;
然后看看哪个外设的IO口没有拉高/拉低;
还有进入睡眠IO口的配置,是悬空/推挽/上拉/下拉?

使用特权

评论回复
5
皈依| | 2017-2-20 14:09 | 只看该作者
所有外设的始终关掉,引脚关掉,时钟配置成内部LSI 速度最慢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

287

帖子

6

粉丝