进入for循环几次后变量的值被修改成很大的数,程序跑飞,中间设有while等待感觉没等到条件成立就跳过等待了,怀疑栈溢出找不到修改办法
进入for循环几次后变量的值被修改成很大的数,程序跑飞,中间设有while等待感觉没等到条件成立就跳过等待了,怀疑栈溢出找不到修改办法,感谢大神指导。 补充一下,删掉次要代码,只保留主要代码可以运行。 想要判断是否堆栈问题,至少要提供芯片型号跟RAM使用情况。例如:此外编译生成的m51文件可以看到编译器分配的堆栈起始地址
乘风飞扬 发表于 2025-1-21 09:37
想要判断是否堆栈问题,至少要提供芯片型号跟RAM使用情况。例如:
此外编译生成的m51文件可以看到编译器分 ...
下午发你 乘风飞扬 发表于 2025-1-21 09:37
想要判断是否堆栈问题,至少要提供芯片型号跟RAM使用情况。例如:
此外编译生成的m51文件可以看到编译器分 ...
芯片是ai8051u34k64 涪陵杰哥 发表于 2025-1-21 13:27
芯片是ai8051u34k64
8051U的堆栈放在edata空间,从当前RAM使用情况来看,堆栈空间是足够的。 乘风飞扬 发表于 2025-1-21 14:20
8051U的堆栈放在edata空间,从当前RAM使用情况来看,堆栈空间是足够的。
有没地方能改,我的没有m51文件,也没startup,也没linker选项,我的变量有时被改到很大的数,有时是0。 涪陵杰哥 发表于 2025-1-21 15:10
有没地方能改,我的没有m51文件,也没startup,也没linker选项,我的变量有时被改到很大的数,有时是0。 ...
可以检查是否存在数组越界访问,以及打开了中断但是没有定义中断函数的问题。
数组越界可以将数组封装为一个函数,通过使用if检查每次访问的值,如果错误了使用某个io口输出电平,这样虽然程序运行速度会慢很多,但是可以保证能检查到问题 王昱顺 发表于 2025-1-21 16:42
可以检查是否存在数组越界访问,以及打开了中断但是没有定义中断函数的问题。
数组越界可以将数组封装为 ...
我再检查一下我的逻辑 问题已解决,过程很麻烦,软件与硬件都修改后才解决了。预处理数据消耗更多的内存避免了栈溢出,另外电机到位检测选了串口返回数据放弃了特定引脚电平检测。
页:
[1]