Creator 4.3 的 release note 确实写明了 “The officially supported MDK version is 4.72a. ” ,但是通常使用其他版本也是不会存在问题的,所以不应该 MDK 与 Creator 的兼容性问题, MDK 最新的版本是 V5.31 你可以试试最新版本是否有问题。我们确实偶尔会碰到编译器的 bug, 有时随便在哪里增加一句无关紧要的代码,程序执行就正常了。
IntDefaultHandler 函数中有两个 while 循环分支,一个是 heap/stack 溢出跳入分支,另一个是其他原因(比如CPU访问越权地址或定义一个了指针但没有为它指定地址,导致 CPU 访问越权地址等)的分支。CPU 现在进入的是哪一个分支呢?
heap/stack 没有溢出,CPU 进入的是另外一个分支,而且程序中的指针很少且使用都有注意,不知是否还有其他原因
硬件供电电路是否是正确的呢,比如 VCCD 是不是直接接了电压信号,而不是通过电容接地
硬件电路VCCD 确实是通过电容接地的,但是程序前期是可用的,到后期添加的功能内容多了就会出现IntDefaultHandler问题,比如说往相关的结构体中增加一个变量,结构体中定义都是char类型且按1字节对齐,成员多少应该不会导致程序出问题,但一添加程序就运行到IntDefaultHandler中
如果你的变量增加多了之后,导致进入IntDefaultHandler中断中,我有理由怀疑你是堆栈溢出。请在creator中把heap和stack的值改大一些,看问题是否还会出现?
从你的描述看,应该是固件哪里有问题导致的,debug 定位一下跳转位置应该可以定位到问题代码。
问题是否已定位
并未找到问题原因,不过在这个过程中发现一个有意思的事情,因为之前都是使用的MDK的编译工具,而把编译工具换成默认的GCC则不会再出现这个问题,同步使用的IAR也并未出现,首先编译是都没有问题,堆栈也未溢出,但GCC对代码的优化并不好,使用MDK会稳定些,这是MDK和工具链的版本,是否兼容性问题亦或者是配置有问题
Creator 4.3 的 release note 确实写明了 “The officially supported MDK version is 4.72a. ” ,但是通常使用其他版本也是不会存在问题的,所以不应该 MDK 与 Creator 的兼容性问题, MDK 最新的版本是 V5.31 你可以试试最新版本是否有问题。我们确实偶尔会碰到编译器的 bug, 有时随便在哪里增加一句无关紧要的代码,程序执行就正常了。