大神之路艰辛且漫长,整了一个星期的问题

2019-08-13 19:13发布

背景:最近项目在测试MCU在Run mode,8Mhz的电流消耗。规格书为:,即开启所有外设功耗:5.9mA,关闭所有外设时钟为:3.7mA.

硬件连接:MCU为STM32F105VCT6,单片机最小系统模块,万用表连接电源。
问题描述:
主函数什么都没有,也没有其他的工程,如下:

int main(void)
{
        while(1)
        {                       
        }
}

这种情况下,使用官方3.5的库,系统时钟已经设置好。测得电流为3.72mA.
那么问题是,如果我在main中随便增加一个函数,如下:
int yyynit(void)
{
     return 0;
}

int main(void)
{
    yyynit();
    while(1)
    {}
}

电流飙升到10.1mA。这是为什么呢?而且如果再加多一个函数。如下:
int main(void)
{
    yyynit();
    yyynit();
    while(1)
    {}
}

又变成3.72mA。不知道有没有大神碰到过这种情况,求解答。




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
mack13013
1楼-- · 2019-08-14 00:22
 精彩回答 2  元偷偷看……
mack13013
2楼-- · 2019-08-14 04:33
具体问题具体分析。
你的那几个初始化函数都有什么内容都没贴出来,没办法判断的。

不过这个有位大神在论坛里分享了他的低功耗项目心得,自己去看吧。

分享一个低功耗项目小小心得
lin993586486
3楼-- · 2019-08-14 09:34
mack13013 发表于 2017-10-13 18:27
具体问题具体分析。
你的那几个初始化函数都有什么内容都没贴出来,没办法判断的。

你说的初始化函数是Sysinit()?除了这个没有贴出来,其他都贴出来了,就相当于一个空的工程。除了8M,设置成其他主频还是会出现这种无端端多出来4-6mA的功耗。还有你分享的连接我看过了,我低功耗情况是使用standby mode,该模式下单纯MCU2.2uA,符合规格书。就是run mode的这莫名其妙多出来的4-6mA,一直查不出问题所在
mack13013
4楼-- · 2019-08-14 12:56
lin993586486 发表于 2017-10-15 11:02
你说的初始化函数是Sysinit()?除了这个没有贴出来,其他都贴出来了,就相当于一个空的工程。除了8M, ...

还有另外一个方面,对方使用STOP mode实现了低功耗,那可以研究一下stop mode时,具体的操作是怎样的,怎样对寄存器或者内存地址进行了设置,这些设置怎样影响外设的,可以仿做一下。

我没做过这方面的开发,能帮到的就到这里了
lin993586486
5楼-- · 2019-08-14 13:20
mack13013 发表于 2017-10-15 15:06
使用ST-LINK或者J-LINK在线调试一下看看,在yyynit()和while处打下断点,然后查看一下反汇编窗口,看一下 ...

感谢您的解答,我继续研究一下。
NULLFF
6楼-- · 2019-08-14 14:42
 精彩回答 2  元偷偷看……

一周热门 更多>