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.

【求助】数组长度导致硬件fault死循环问题

IDE为Keil 5.10 ,打算用一个长度为256个整形的数组 (volt[256]) 存放ADC的转换结果的时候发现无法运行,debug发现其在显示屏的初始化函数中断的某一行触发了硬件fault循环,经过不断尝试后发现数组长度不能大于51。现在苦于找不到可行的解决方法。请问这个是什么问题?寄存器或者flash地址错误或者是其它问题?之前用keil 4 的时候也有同样的问题。希望能尽快解决……

tm4c_fft.zip
  • 是否是因为超过了MCU rom的大小了呢

  • 先问楼主2个问题:

    1. 堆栈设置的多大?

    2.volt[256]这个数组是全局变量还是局部变量?

    看起来像是堆栈溢出了。增加堆栈大小,并把这种大数组定义为全局变量,就不会占用对战空间了。

    一般我们不建议在函数中尤其是中断服务程序中定义大的局部变量。

  • 非常感谢回答……终于能够正常运行了。

    这个数组定义为全局变量后就能够正常定义大小了。原来是直接在main函数里面定义的。看来应该是堆栈溢出了。

    堆栈设置没留意……囧

  • 解决就好。如果MCU还有充足的RAM,建议把堆栈设大一点,这样比较安全。

    一般写上位机程序习惯了大刀阔斧,局部变量随便定义,不过嵌入式系统还是资源太小了。

  • 学习了,一直没那么干过,原来是堆栈的影响