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条回答
登云钓月
1楼-- · 2019-07-20 21:22
可能会死机吧
hyming
2楼-- · 2019-07-21 02:23
不会死机,除了kk值没办法写入,其它什么都是好的
liuchang
3楼-- · 2019-07-21 03:19
能把static err_t http_recv(void *arg, struct tcp_pcb *pcb,  struct pbuf *p, err_t err)函数写全嘛
我也很好奇这个问题,想看看
hyming
4楼-- · 2019-07-21 05:49
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-21 10:56
 精彩回答 2  元偷偷看……
hyming
6楼-- · 2019-07-21 14:38
正点原子 发表于 2016-7-20 21:21
堆栈设置大一点试试

原子哥,堆栈我是从startup_stm32f4xx.s 文件里面的Stack_Size设置的,本来是0x00000400又设了0x800,0x1000,都不行。。。但其实就那一个变量不能用,其他的什么都是好的。。

一周热门 更多>