OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2189|回复: 5

static修饰的局部变量问题

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-8-13
在线时间
6 小时
发表于 2016-12-15 09:15:34 | 显示全部楼层 |阅读模式
1金钱
step被static所修饰,刚开始step可以从0->1->2这几个步骤都没有问题,执行完step = 3语句,即将退出函数(在下面1处)step 的值莫名其妙的变回2,step变量只有这个地方使用,这个是什么问题???大神们帮忙分析一下什么问题!!!!!
如下程序:
void display()
{
  static u8  step = 0;
      if(step == 0)
  {
        ........
        step = 1;
    }
    else if(step == 2)
    {
         .......
         step = 1;
    }
    else if(step == 3)
    {
        .........
        step = 4;
    }
}   -------------<1

只是我不小心试探你的温柔,却没想过是这种结果。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-8-13
在线时间
6 小时
 楼主| 发表于 2016-12-15 09:18:07 | 显示全部楼层
step == 2下面是step = 3,不是等于1
    else if(step == 2)
    {
         .......
         step = 3;
    }
只是我不小心试探你的温柔,却没想过是这种结果。
回复

使用道具 举报

7

主题

333

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1838
金钱
1838
注册时间
2012-7-16
在线时间
504 小时
发表于 2016-12-15 09:24:24 | 显示全部楼层
根据你的描述看不出来什么问题,你这段代码要实现什么功能,感觉比较奇怪。
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-8-13
在线时间
6 小时
 楼主| 发表于 2016-12-15 09:29:40 | 显示全部楼层
这个就是一些状态切换来的,我也感觉很奇怪,莫名出现这个问题,但是把他声明成全局变量就没有问题
只是我不小心试探你的温柔,却没想过是这种结果。
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2014-8-13
在线时间
6 小时
 楼主| 发表于 2016-12-15 09:33:58 | 显示全部楼层
上面少了一个
else if(step == 1){
     step = 2;

这几条语句
只是我不小心试探你的温柔,却没想过是这种结果。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-12-17 21:04:08 | 显示全部楼层
仿真跟踪,莫名其妙一般是中断里面修改了,或者你的堆栈太少。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 05:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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