共2条
1/1 1 跳转至页
【求助】请教内存变量无故发生变化

问
我的系统中有若干全局静态变量。在线调试时已经可以确认在RAM中地址没有重叠,而且没有溢出。系统在工作负荷不大的情况下一切正常。但是如果长时间处于高负荷工作状态下(连续开启多个中断进行数据采集和运算),发现有一些变量出现莫名其妙的改变,而且出现了按照程序运行不可能出现的数值。
系统具有外部看门狗,可以确认主程序没有跑飞,此时停止运行,查看memoy窗口,发现RAM还有很多空间没有使用(没有使用的都是显示0),查看watch窗口,可以发现有一些变量出现莫名其妙的改变。
我使用的EW430_V220破解版,C语言。各位有没有看过这种现象?难道是破解版的问题吗? 答 1: 有哪位大侠知道呢?
恳请指教! 答 2: 是不是有中断嵌套? 答 3: 我在中断服务程序里面没有再次开中断,而且没有使用过乘法(应该没有调用到硬件乘法器)。 答 4: 变化是有规律性还是无规律性?每次都是相同的变量发生变化吗?跟踪一下,看在何处产生了变化!
奇怪ING? 答 5: 有没有例子程序? 答 6: 这种情况百分之九十九是程序修改了RAM,还是先从程序中查找问题。
至于其他原因我还没遇到过 答 7: 我觉得430真差,全局变量都会莫名其秒的变! 答 8: 哈,有可能是你的编译器设置的堆栈不够大,负荷大的时候堆栈溢出了,试试看。 答 9: 我有一次是因内存超出去了,变量产生变化,估计你这是在中断里内存超范围了 答 10: 如果方便的话,请发一段有问题的程序,看看我们能不能帮你解决一下 答 11: 我估计可能是D版编译器的原因。
我做了下面的试验。
unsigned int i;
i |= BIT9; //预先设置BIT9位为1
if ( i & BIT9 ) //这里if判断的结果经常会是Fault。但是在我起初的程序中,这样的判断写法是可以的。当程序大的时候,就出现问题了。必须写成下面形式才会得出结果为真。
if ( ( i & BIT9 ) == BIT9 )
你说是不是很奇怪?? 答 12: 自己帮自己顶一下! 答 13: 各位版主和高手,有人有时间回答我的疑问吗??
我觉得这个问题很难理解啊??
系统具有外部看门狗,可以确认主程序没有跑飞,此时停止运行,查看memoy窗口,发现RAM还有很多空间没有使用(没有使用的都是显示0),查看watch窗口,可以发现有一些变量出现莫名其妙的改变。
我使用的EW430_V220破解版,C语言。各位有没有看过这种现象?难道是破解版的问题吗? 答 1: 有哪位大侠知道呢?
恳请指教! 答 2: 是不是有中断嵌套? 答 3: 我在中断服务程序里面没有再次开中断,而且没有使用过乘法(应该没有调用到硬件乘法器)。 答 4: 变化是有规律性还是无规律性?每次都是相同的变量发生变化吗?跟踪一下,看在何处产生了变化!
奇怪ING? 答 5: 有没有例子程序? 答 6: 这种情况百分之九十九是程序修改了RAM,还是先从程序中查找问题。
至于其他原因我还没遇到过 答 7: 我觉得430真差,全局变量都会莫名其秒的变! 答 8: 哈,有可能是你的编译器设置的堆栈不够大,负荷大的时候堆栈溢出了,试试看。 答 9: 我有一次是因内存超出去了,变量产生变化,估计你这是在中断里内存超范围了 答 10: 如果方便的话,请发一段有问题的程序,看看我们能不能帮你解决一下 答 11: 我估计可能是D版编译器的原因。
我做了下面的试验。
unsigned int i;
i |= BIT9; //预先设置BIT9位为1
if ( i & BIT9 ) //这里if判断的结果经常会是Fault。但是在我起初的程序中,这样的判断写法是可以的。当程序大的时候,就出现问题了。必须写成下面形式才会得出结果为真。
if ( ( i & BIT9 ) == BIT9 )
你说是不是很奇怪?? 答 12: 自己帮自己顶一下! 答 13: 各位版主和高手,有人有时间回答我的疑问吗??
我觉得这个问题很难理解啊??
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |