iccavr中的_StackCheck();堆栈检查如何用?
_StackCheck();不插入_StackCheck();程序正常工作。但有时会死机。
插入_StackCheck();程序会复位。
请教高手指点 这是检测堆栈是否溢出的方法 只用不多的DATA 25BYE,AVR88,应该数据不会溢出。是中断后检出错误 任意一个程序失败的重要原因是堆栈溢出到其它数据内存的范围 两个堆栈中的任意
一个都可能溢出 并且当一个堆栈溢出时会偶然产生坏的事情 你可以使用堆栈检查函数
检测溢出情况。 解决 硬件堆栈起初是用于存贮函数返回的地址 它代表了许多小的软件堆栈 通常 如果
你的程序没有子程序调用 也不调用象带有%f 格式的 printf()等库函数 那么默认的 16 字
节应该在大多数的例子中能良好工作 在绝大多数程序中 除了很繁重的递归调用程序 再
入式函数 最多 40 个字节的硬件堆栈应该是足够的。
16改为40 OK 我认为_StackCheck();很重要,《任意一个程序失败的重要原因是堆栈溢出》,应该很好的应用 谢谢LZ。。。
页:
[1]