This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F2812程序运行不正常?



程序下载到flash中,程序能运行,并且大部分输出结果都正确,但是会有某一段程序的结果不正确?

尝试解决办法:1、将一些局部变量改为全局变量、或将一些全局变量改为局部变量,有时可以使程序正常运行;

2、使用命令“#pragma DATA_SECTION”,改变变量的位置,有时可以使程序正常运行;

3、或者在程序中加一些不相干的代码,也能使程序正常运行;

上述3种方法并不能从根本上解决问题,有时需要增加一些新功能,增加代码后,就会出现新的问题。

而且有时仿真运行结果和在flash中运行的结果不一致?

有可能是什么原因引起的呢?网上说的很多方法我都试过了,没有解决问题,求解答?

  • 根据现象描述建议检查下CMD文件,也许是内存分配问题,如空间不够,重叠等,特别是RAM和Flash等,谢谢!

  • 我最开始怀疑的也是cmd文件的问题,我更换了官网例程的cmd文件,并做了稍微修改;

    并且通过map文件查看,没有发现异常;

    也怀疑过中断函数运行时间过长,超过2次中断的间隔时间,但用示波器测试过,时间在允许范围内;

    也用MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart)这个函数进行了flash到ram的搬移;

  • 我之前专门改过cmd文件,每一个位置都尽量分配了一个大的空间,长度应该是够的;

    并且不同种类的,都分配在了不同的区域中,应该也不会游重叠,但是还是没有解决问题,后来我就没有特意改过cmd文件了;

    附件中是我现在用的cmd文件,以及map文件。

    cmd&map.rar