keil stm32f407 无操作系统 堆栈溢出怎么办

2019-07-20 21:13发布

stm32裸跑     
static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t err)
在http编程中,在上述函数中增加了一个局部变量u32 kk=0;
但是在函数中多次进行.... else if ((strncmp(data, "POST /checklogin.cgi",20)==0)  这样的判断以后(大约5次),kk值就写不进去了,函数的参数err值突然就从0改变了,
QQ截图20160719170734.jpg
http_recv的地址值也变了。如果把kk变量设置为全局变量,那么就没有这个问题,所以感觉是堆栈大小设置小了
于是网上搜了一下 更改了   Stack_Size      EQU     0x00000800   (以前是 0x00000400),但是没有作用,请问这个问题除了设置全局变量以外还有什么方法可以解决呢?谢谢解答!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
jermy_z
1楼-- · 2019-07-21 18:47
hyming 发表于 2016-7-21 08:53
原子哥,堆栈我是从startup_stm32f4xx.s 文件里面的Stack_Size设置的,本来是0x00000400又设了0x800,0x1 ...

你那个变量地址跟别的地址越界了吧
hyming
2楼-- · 2019-07-21 22:03
jermy_z 发表于 2016-7-21 09:00
你那个变量地址跟别的地址越界了吧

看起来是这样,但该怎么解决呢

一周热门 更多>