打印
[STM8]

局部int型静态变量

[复制链接]
939|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songqian17|  楼主 | 2020-5-26 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是IAR FOR STM编译器,一个涵数中定义了int型静态变量
static unsigned int T20min,T1hour;//20,60分钟
T20min,T1hour都是加1的,在运行过程中可以看到会从几十突然变到几千或几万的,但换成两个static unsigned char静态变量就正常了,或者换成数组形变量也没事。为什么会这样?这个静态变量只是局部的,只有这个涵数才用到的。

使用特权

评论回复
评论
edan_lee 2020-5-27 11:52 回复TA
程序片段贴出来,会比较有针对性的分析吧? 
沙发
huwr| | 2020-5-26 23:12 | 只看该作者
检查下 T20min,T1hour到达60 和24后的判断条件是否正常

使用特权

评论回复
板凳
happy_10| | 2020-5-26 23:15 | 只看该作者
有可能存在越界其他数据把他们破坏了

使用特权

评论回复
地板
bqyj| | 2020-5-26 23:18 | 只看该作者
静态局部变量固定占用了一个内存坑。

使用特权

评论回复
5
songqian17|  楼主 | 2020-5-26 23:20 | 只看该作者

T20min++;
if(T20min>1999)
{
   T20min=0;
}
都是正常的,有时候记时也正常,有时候就乱变。

使用特权

评论回复
6
wenfen| | 2020-5-26 23:24 | 只看该作者
那很有可能别的数据把他破坏了,可以这样去验证,你将这2个静态局部变量定义成一个长度为6的数组,数组前2个和后面2个初始化为0,中间2个给T20min和T1hour用,运行一段时间后,检查下数组的前面2个和后面2是个是不是还是为0

使用特权

评论回复
7
zhuhuis| | 2020-5-26 23:28 | 只看该作者
嗯,如果不为0,那很可能就是哪里把他改变了。

使用特权

评论回复
8
songqian17|  楼主 | 2020-5-26 23:31 | 只看该作者
换成两个static unsigned char静态变量就正常了,或者换成数组形变量也没事,这个涵数用的都是静态变量

使用特权

评论回复
9
chenho| | 2020-5-26 23:33 | 只看该作者
if(T20min>1999)  你变成uchar后 那么这个条件永远不可能满足了,0~255

使用特权

评论回复
10
chuxh| | 2020-5-26 23:37 | 只看该作者
建议从根本上找原因,而不是稀里糊涂的把它避开

使用特权

评论回复
11
chuxh| | 2020-5-26 23:41 | 只看该作者

正常不会的;
好像好查下程序看看

使用特权

评论回复
12
songqian17|  楼主 | 2020-5-26 23:44 | 只看该作者
两个uchar后,就不是这个if(T20min>1999) 判断了

使用特权

评论回复
13
juventus9554| | 2020-5-26 23:47 | 只看该作者
嗯,好好好排查下这个原因,肯定能学到不少知识

使用特权

评论回复
14
songqian17|  楼主 | 2020-5-26 23:51 | 只看该作者
唉,还是没有什么结果,算了,先结贴吧,多谢大家啦

使用特权

评论回复
15
banyai| | 2020-5-27 12:22 | 只看该作者
在仿真的时候设置一个变量写断点,跟踪一下,看看什么时候被修改的。

使用特权

评论回复
16
diweo| | 2020-5-27 15:32 | 只看该作者
本帖最后由 diweo 于 2020-5-27 15:33 编辑

查看map文件,看看紧挨着它们的变量有没有问题。

使用特权

评论回复
17
观海| | 2020-6-8 13:15 | 只看该作者
局部静态有什么必要吗

使用特权

评论回复
18
guanjiaer| | 2020-6-8 13:19 | 只看该作者
应该是哪里呗修改了

使用特权

评论回复
19
heimaojingzhang| | 2020-6-8 13:19 | 只看该作者
有没有可能是别的地方操作指针的时候不行小心修改的呢

使用特权

评论回复
20
keaibukelian| | 2020-6-8 13:20 | 只看该作者
可以单步运行监测一下h是在什么时候被修改的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

5749

帖子

1

粉丝