• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

在单片机程序里频繁读写的变量放在全局或静态局部变量会更好吗

_落雪千寒灬 2019-12-12 浏览量:1157

看看我的理解对不对

1.全局变量 静态局部变量 栈 堆 全都会放在RAM中

2.函数

uint32_t fun(uint32_t arg){

    static uint32_t i;

    uint32_t j;

    ...

    return j;

}

其中 参数arg 变量j 都是会放在栈中 i放在静态局部变量区 

如果 函数fun是放在while(1)中频繁运行 根据问题1. 那么是不是最好把arg j改成静态局部变量或者全局变量


0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 从好的编程习惯来说,尽量减少全局变量的使用

    此外无论那种变量,其实都在RAM中,只是在RAM中的不同位置而已。

    只要是在RAM,频繁读写都没有问题,都不会时选择变量类型(全局、静态、局部)之类需要考虑的因素。

    全局变量用来在不同函数之类非传参传递信息

    静态局部变量时在同函数中保持执行过程状态(保持上次本函数执行状态,或者称为延续上次本函数执行状态)

    • 发布于 2019-12-12
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 如果程序简单,放在全局变量也是可以的,这样操作方便
    从程序规范化来说,要放在静态变量中,
    频繁使用的变量,其实并没有什么特殊的,所有的变量在单片机中的处理方式是一样的。
    • 发布于2019-12-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 对于单片机来说全局变量和局部静态变量耗的资源是一样的,只是编程上尽量少用全局变量,只有多个函数需要调用才会用全局变量,因为全局变量如果使用太多的话程序看上去会比较乱,

    他们存放的位置都在栈中

    • 发布于2019-12-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 全局变量是存储在Flash上的吧,静态的是在片上的RAM上的,如果频繁使用,可以设置成静态变量,通过参数传递
    • 发布于2019-12-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 1、正确,RAM会分成不同段,不同的变量保存在不同的段里面

    2、性能上面其实是一样的,放不同的地方只是方便开发者而已

    • 发布于2019-12-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 其实就是你理解的这样,对于频繁读写的数据应该保持到RAM中,这样读写速度更快
    • 发布于2020-01-14
    • 举报
    • 评论 0
    • 0
    • 0

  • 对于单片机的的变量,要根据你的场景使用,如果是动态的数据,我们用局部变量就可以,如果是要在程序中多个函数使用,我们一般是用全局变量
    • 发布于2020-01-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

在单片机程序里频繁读写的变量放在全局或静态局部变量会更好吗