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

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条回答
NULLFF
1楼-- · 2019-08-14 18:59
NULLFF 发表于 2017-10-16 10:34
这么说吧,比如下面的程序:
LocalLoop: NOP
                     NOP

这个我能理解,问题是运算量导致的功耗增加,不应该是以mA级别为单位的。
lin993586486
2楼-- · 2019-08-14 23:06
楼主好
lin993586486
3楼-- · 2019-08-14 23:32
NULLFF 发表于 2017-10-16 18:28
所以追究这个也没有太大必要,你只要想办法优化你的代码,把任务快速处理,空闲时间立即进入合适的低功耗模 ...

谢谢您的解答,您的建议我会仔细考虑。
NULLFF
4楼-- · 2019-08-15 05:01
目前正在考虑使用STM32L系类低功耗单片机。推断多了4-6mA,可能是CM3内核启动了某个单元导致功耗增大,而datasheet的参数,只能说明该芯片在一定条件下能够测到的最低功耗电流。具体原因还未得到证明,待日后找到原因再分享出来。

一周热门 更多>