cancel
Showing results for 
Search instead for 
Did you mean: 

PSoC 4 MCU

tali_4848921
New Contributor

在程序运行时,函数的调用以及执行会使用堆栈,为了防止堆栈溢出,想要计算各个函数之间调用的最大路径以及使用的最大堆栈。

使用PSoC Creator有什么办法能计算出来吗?

注:不是单个函数使用的堆栈大小,是包含了调用关系的堆栈大小,也就是想知道程序运行时各种情况下能使用的最大堆栈量。

0 Likes
Reply
1 Solution
Roy_Liu
Moderator
Moderator

一个类似的老帖参考一下Solved: how can i detect stack overflow? - Cypress Developer Community

另外 也可以在在网上搜一搜堆栈溢出检测方法,网上挺多相关介绍的。

Roy Liu

View solution in original post

0 Likes
Reply
3 Replies
LinglingG_46
Moderator
Moderator

PSoC Creator 的工程编译之后,会生成一个output,你可以看到你工程分配的堆栈空间。

pastedImage_0.png

你可以在工程中设置这个值:

pastedImage_1.png

你可以看一下这个链接文档: PSoC® Arm® Cortex® Code Optimization (cypress.com)

0 Likes
Reply
tali_4848921
New Contributor

感谢你的回答,但是很抱歉你的回答并不是我要问的,我知道如何在工程中设置堆栈的大小。我想问的问题是:在程序运行时,函数执行时会占用堆栈的空间,我想计算出包括各种情况的函数调用使用的最大的堆栈空间是多少?因为我并不知道我设置的堆栈大小是否合适,所以想根据程序运行时使用的堆栈大小来设置。

0 Likes
Reply
Roy_Liu
Moderator
Moderator

一个类似的老帖参考一下Solved: how can i detect stack overflow? - Cypress Developer Community

另外 也可以在在网上搜一搜堆栈溢出检测方法,网上挺多相关介绍的。

Roy Liu

View solution in original post

0 Likes
Reply