IDE为Keil 5.10 ,打算用一个长度为256个整形的数组 (volt[256]) 存放ADC的转换结果的时候发现无法运行,debug发现其在显示屏的初始化函数中断的某一行触发了硬件fault循环,经过不断尝试后发现数组长度不能大于51。现在苦于找不到可行的解决方法。请问这个是什么问题?寄存器或者flash地址错误或者是其它问题?之前用keil 4 的时候也有同样的问题。希望能尽快解决……
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.
IDE为Keil 5.10 ,打算用一个长度为256个整形的数组 (volt[256]) 存放ADC的转换结果的时候发现无法运行,debug发现其在显示屏的初始化函数中断的某一行触发了硬件fault循环,经过不断尝试后发现数组长度不能大于51。现在苦于找不到可行的解决方法。请问这个是什么问题?寄存器或者flash地址错误或者是其它问题?之前用keil 4 的时候也有同样的问题。希望能尽快解决……
先问楼主2个问题:
1. 堆栈设置的多大?
2.volt[256]这个数组是全局变量还是局部变量?
看起来像是堆栈溢出了。增加堆栈大小,并把这种大数组定义为全局变量,就不会占用对战空间了。
一般我们不建议在函数中尤其是中断服务程序中定义大的局部变量。
非常感谢回答……终于能够正常运行了。
这个数组定义为全局变量后就能够正常定义大小了。原来是直接在main函数里面定义的。看来应该是堆栈溢出了。
堆栈设置没留意……囧
解决就好。如果MCU还有充足的RAM,建议把堆栈设大一点,这样比较安全。
一般写上位机程序习惯了大刀阔斧,局部变量随便定义,不过嵌入式系统还是资源太小了。