[STM32F2] STM32代码中某个变量值自动改变

[复制链接]
2578|15
 楼主| 远芳侵古道 发表于 2024-6-30 13:08 | 显示全部楼层 |阅读模式
在STM32开发中时,代码中的某个变量 突然自动变化,博主遇到过是一个结构体的一个变量数值自动改变(PS:这个可以通过debug分析出来)。
   分析与解决: 可能是内存溢出的问题,即内部的代码复杂,定义的变量(尤其是静态变量过多),导致内存溢出;建议在使用该变量前重新赋值,或者减少静态变量的定义(推荐后一种)。

稳稳の幸福 发表于 2024-6-30 18:21 | 显示全部楼层
一般不操作不会改变,除非跑飞了。可以考虑用看门狗复位。
suncat0504 发表于 2024-6-30 22:41 | 显示全部楼层
感觉是处理代码的问题。结构体往往多个变量汇集,尤其是有指针、数组类型的成员时,操作上非常容易发生越界改变。
菜鸟的第一步 发表于 2024-7-10 15:58 | 显示全部楼层
一般不会自动改变的吧,
hehhehee 发表于 2024-7-26 14:46 | 显示全部楼层
减少静态变量:尽量减少静态变量的定义,以释放内存。
重新赋值变量:在使用变量前重新赋值,确保其值正确。
公羊子丹 发表于 2025-2-9 09:11 | 显示全部楼层
这种问题确实头疼,我之前遇到过是数组越界导致的变量异常变化,你有检查过相关代码吗?
周半梅 发表于 2025-2-9 09:12 | 显示全部楼层
有没有可能是DMA直接写内存导致变量被意外修改?可以排查一下DMA配置。
帛灿灿 发表于 2025-2-9 09:13 | 显示全部楼层
建议打开编译器的栈溢出检测选项,看看是否有栈空间不足的情况。
童雨竹 发表于 2025-2-9 09:14 | 显示全部楼层
你试过用volatile关键字修饰变量吗?有时候编译器优化也会带来变量值异常的问题。
万图 发表于 2025-2-9 09:15 | 显示全部楼层
看看是不是中断函数修改了这个变量,可能需要加锁保护。
Wordsworth 发表于 2025-2-9 09:16 | 显示全部楼层
我一般遇到这种问题会先查找全局变量的访问路径,看看是否有未预料到的赋值。
Bblythe 发表于 2025-2-9 09:17 | 显示全部楼层
你可以试试在变量前后插入特定标记数据,检测是否有内存非法写入。
Pulitzer 发表于 2025-2-9 09:19 | 显示全部楼层
如果是复杂结构体,可以考虑分离出关键变量,减少误修改的风险。
Uriah 发表于 2025-2-9 09:20 | 显示全部楼层
建议用watchpoint功能设置数据断点,这样能精确捕获变量变化的位置。
Clyde011 发表于 2025-2-9 09:21 | 显示全部楼层
有没有可能是因为栈和堆空间重叠导致的?可以调整链接脚本里的内存分配策略试试。
中国龙芯CDX 发表于 2025-2-9 14:22 | 显示全部楼层
变量值自动改变?地址的问题还是覆盖了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

86

主题

887

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部