你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32 内存地址里面的数莫名其妙改变!!!!

[复制链接]
子曰小玖 提问时间:2014-11-18 13:28 /
1111.jpg
请大家帮忙看一下     0X200001C3中的数据     在0X2000018A中   也会出现     但是0X2000018A是一个标志结构体     里面的数据只能等于0或者1

  一到有通讯的时候     revTempBuffer   字符串中的数据  就会传到    0X2000018A地址中  


收藏 评论37 发布时间:2014-11-18 13:28

举报

37个回答
子曰小玖 回答时间:2014-11-18 15:52:01
品读记忆 发表于 2014-11-18 15:37
堆栈 不够用了? 全局变量使用的是 RAM 局部变量(比如 局部的结构体)使用的是堆栈 如果溢出 会出现覆盖的 ...

够用     没有溢出    我特意看了一下
子曰小玖 回答时间:2014-11-18 15:05:20
把结构体去掉       变成全局变量就   好使了
子曰小玖 回答时间:2014-11-19 14:49:30
安 发表于 2014-11-19 14:32
你的结构体怎么定义的?使用的时候如何定义的?

typedef struct
{
uint8_t  Flag_Switch;
uint8_t  Flag_SwitchAnswer;
uint8_t  Flag_Waddr;
uint8_t  Flag_Wthistime;
uint8_t  Flag_Rstatus;
uint8_t  Flag_Raddr;
uint8_t  Flag_Rthistime;
uint8_t  Flag_Ropentime_random;
uint8_t  Flag_Heatcyclestart;//Flag_Apportioncyclestart
uint8_t  Flag_Heatcycleend;       
uint8_t  Flag_Apportioncycle_Wheat;
.
.
.
.
}Flag_InitTypeDef;

使用的时候   
if(.....)
Flag_InitStructure.Flag_Heatcycleend=0

if(Flag_InitStructure.Flag_Heatcycleend==0)
{
.
.
.
.
}
这种结构
品读记忆 回答时间:2014-11-18 15:37:20
堆栈 不够用了? 全局变量使用的是 RAM 局部变量(比如 局部的结构体)使用的是堆栈 如果溢出 会出现覆盖的问题
品读记忆 回答时间:2014-11-18 16:06:59
一到有通讯的时候     revTempBuffer   字符串中的数据  就会传到    0X2000018A地址中

检查数组 指针之类的 有没有溢出吧 或者贴上代码
废鱼 回答时间:2014-11-18 16:35:49
结构体也是全局的吗?另外,看一下MAP文件,这个结构体附近是哪些变量,会不会有溢出的情况。
Dylan疾风闪电 回答时间:2014-11-18 20:06:03
1.检查引起异常的因素:指针?RAM全局变量?
2.修改标志结构体限定取值范围 typedef struct xx{uint32 flag_xxx:1;...}yy;来避开异常的产生。
子曰小玖 回答时间:2014-11-19 08:27:23
安 发表于 2014-11-18 16:35
结构体也是全局的吗?另外,看一下MAP文件,这个结构体附近是哪些变量,会不会有溢出的情况。 ...

我的结构体也是全局的!
子曰小玖 回答时间:2014-11-19 08:28:07
Dylan疾风闪电 发表于 2014-11-18 20:06
1.检查引起异常的因素:指针?RAM全局变量?
2.修改标志结构体限定取值范围 typedef struct xx{uint32 flag ...

RAM全局变量  没有溢出   
Dylan疾风闪电 回答时间:2014-11-19 10:09:01
先试一下方法2能否解决
子曰小玖 回答时间:2014-11-19 13:06:42
Dylan疾风闪电 发表于 2014-11-19 10:09
先试一下方法2能否解决

不好用   
子曰小玖 回答时间:2014-11-19 14:04:18
Dylan疾风闪电 发表于 2014-11-19 10:09
先试一下方法2能否解决

没解决。现在这个问题     为什么会把结构体去掉   改成全局变量就可以呢??
废鱼 回答时间:2014-11-19 14:32:26
你的结构体怎么定义的?使用的时候如何定义的?
Dylan疾风闪电 回答时间:2014-11-19 14:49:14
wxh0000mm 发表于 2014-11-19 14:04
没解决。现在这个问题     为什么会把结构体去掉   改成全局变量就可以呢?? ...

按照你现在的描述,应该还是内存不够引起的问题。
可能内存中没有足够的连续空间(块)来分配给这个struct。
-------------------------------------------------------------------
我的理解是:结构体变量必定是一组连续的内存地址;单独的全局变量他们的地址不要求连续。
123下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版