STM32/STM8技术论坛
登录
直播中
张英
8年用户
1443经验值
私信
关注
[问答]
用局部int型静态变量运行过程中出现了乱变的情况
开启该帖子的消息推送
IAR
STM
用的是IAR FOR STM编译器,一个涵数中定义了int型静态变量
sta
ti
c unsigned int T20min,T1hour;//20,60分钟
T20min,T1hour都是加1的,在运行过程中可以看到会从几十突然变到几千或几万的,但换成两个static unsigned char静态变量就正常了,或者换成数组形变量也没事。为什么会这样?这个静态变量只是局部的,只有这个涵数才用到的。
回帖
(11)
王涛
2018-9-14 10:13:00
检查下 T20min,T1hour到达60 和24后的判断条件是否正常
检查下 T20min,T1hour到达60 和24后的判断条件是否正常
举报
李萍
2018-9-14 10:13:15
有可能存在越界其他数据把他们破坏了
有可能存在越界其他数据把他们破坏了
举报
李斌
2018-9-14 10:13:31
静态局部变量固定占用了一个内存坑。
静态局部变量固定占用了一个内存坑。
举报
张英
2018-9-14 10:13:45
受到警告
提示:
作者被禁止或删除 内容自动屏蔽
举报
张鹏
2018-9-14 10:13:58
那很有可能别的数据把他破坏了,可以这样去验证,你将这2个静态局部变量定义成一个长度为6的数组,数组前2个和后面2个初始化为0,中间2个给T20min和T1hour用,运行一段时间后,检查下数组的前面2个和后面2是个是不是还是为0
那很有可能别的数据把他破坏了,可以这样去验证,你将这2个静态局部变量定义成一个长度为6的数组,数组前2个和后面2个初始化为0,中间2个给T20min和T1hour用,运行一段时间后,检查下数组的前面2个和后面2是个是不是还是为0
举报
王杰
2018-9-14 10:14:21
换成两个static unsigned char静态变量就正常了,或者换成数组形变量也没事,这个涵数用的都是静态变量
换成两个static unsigned char静态变量就正常了,或者换成数组形变量也没事,这个涵数用的都是静态变量
举报
陈秀英
2018-9-14 10:15:06
if(T20min>1999) 你变成uchar后 那么这个条件永远不可能满足了,0~255
if(T20min>1999) 你变成uchar后 那么这个条件永远不可能满足了,0~255
举报
陈伟
2018-9-14 10:15:19
建议从根本上找原因,而不是稀里糊涂的把它避开
建议从根本上找原因,而不是稀里糊涂的把它避开
举报
陈敏
2018-9-14 10:15:40
两个uchar后,就不是这个if(T20min>1999) 判断了
两个uchar后,就不是这个if(T20min>1999) 判断了
举报
王超
2018-9-14 10:16:02
嗯,好好好排查下这个原因,肯定能学到不少知识
嗯,好好好排查下这个原因,肯定能学到不少知识
举报
chli
2018-9-14 11:04:10
用没有用到指针或者数组的地方贴出来看看?估计是数据越界了
用没有用到指针或者数组的地方贴出来看看?估计是数据越界了
举报
更多回帖
rotate(-90deg);
回复
相关问答
IAR
STM
9.14周五STM32问答小结
2018-09-14
1672
dataflash中的
静态变量
值初始化会
变
吗,怎么改变
变量
的值?
2024-01-15
638
我定义
了
一个
局部
静态变量
,为什么程序刚开始执行时,...
2012-08-17
4560
ARM之
静态变量
简析
2022-04-24
3687
dataflash中的
静态变量
值初始化会
变
吗,怎么改变
变量
的值?
2023-08-21
424
static的全局
变量
与
局部变量
的使用,看完你就懂了
2023-06-27
2981
LABVIEW中可以向C语言中定义
局部
静态变量
static吗?
2016-03-22
5791
dataflash中的
静态变量
值初始化会
变
吗,怎么改变
变量
的值?
2023-06-13
1062
静态变量
的文件范围
2020-03-12
1312
程序
运行
过程中出现
ECC错误的原因?
2023-03-20
515
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分