查看: 1607|回复: 3

[其他] 每天解决一个问题14:跳不出for循环问题

[复制链接]
  • TA的每日心情
    擦汗
    2022-3-3 09:56
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    106

    主题

    836

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1527
    最后登录
    2023-6-12
    发表于 2015-9-7 19:49:18 | 显示全部楼层 |阅读模式
    本帖最后由 jinyi7016 于 2015-9-8 20:20 编辑

    纯个人开发经历中的经验、出错及解决,纯手打文字方式,杜绝“Ctrl+C”、“Ctrl+V”,多多支持,收藏备用。
    背景
    在LCD显示用的for循环,循环显示几屏不同的数据,其中有个菜单,进入后就不再循环显示,但进入菜单后无论怎么按键,都跳不出来,只能复位。
    解决
    菜单中加入一块显示,显示按键值,按键值确实改变了,但就是不出循环。
    仿真时,这个全局变量的值竟然不改变。
    用指针找到这个变量的地址,在memory中,看到这个值也是不变的,但过一会儿就会变一下,但值也不对。
    查看反汇编,看不到这个语句的汇编程序。
    没有编译进hex文件么?为什么呢?
    在编译设置里胡乱的改,有一次竟然可以了,查看改的地方,是优化等级!!
    优化等级改到 最低后,运行没有问题。
    延伸
    编译器的过度优化,把我的全局变量优化掉了,但这样,代码大小就大了很多了。
    最后想到了volatile,用volatile修饰后,再开高了优化等级运行后也正确。
    更多volatile的用法:volatile的详细用法
    我知道答案 目前已有3人回答
    回复

    使用道具 举报

    该用户从未签到

    33

    主题

    292

    帖子

    0

    高级会员

    Rank: 4

    积分
    600
    最后登录
    2016-4-19
    发表于 2015-9-7 22:43:17 | 显示全部楼层
    看上去好复杂
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2017-2-9 14:16
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    25

    主题

    1785

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2250
    最后登录
    2024-6-11
    发表于 2015-9-7 23:55:12 | 显示全部楼层
    谢谢分享,收藏了
    freescaleic.org.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    44

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    1970-1-1
    发表于 2015-9-11 09:54:53 | 显示全部楼层
    全局变量用起来要很小心
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-13 16:44 , Processed in 0.092807 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表