产品使用方式:STM32F051C8+ENC28J60+uIP
操作系统:没有
现像:
TCP_SERVER ,TCP_CLIENT, UDP 三个端口都能实现正常通讯,但时常程序指令会跑到HardFault_Handler ......B. 这个地方,不知道是什么原因造成的死机
尝试过的调试方式:
1.由于项目中用了内存管理,由于对这块了解不是很深,把这一模块去掉,三个端口的接收和发送缓存都更改为全局数组。无效
2.去掉TCP_CLIENT, UDP两个端口,只保留TCP_SERVER ,通过“TCP调试终端”反复发送数据时,仍会有死机的现像
发费了几天的时候,无法找到原因,请各位不吝赐教,谢谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
stack_size EQU 0X00000400 更改为(1K)
stack_size EQU 0X00000600 (1.5K)
heap_size EQU 0X00000200 更改为
heap_size EQU 0X00000600
仍然会不定期的跑到HardFault
只要是链接了TCP_SER ,不断的发送数据,就会不定期的出错
以下是TCP_SER的勾子函数
void tcp_server_demo_appcall(void)
{
if(uip_aborted())tcp_server_aborted();
if(uip_timedout())tcp_server_timedout();
if(uip_closed())tcp_server_closed();
if(uip_connected())tcp_server_connected();
if(uip_acked())tcp_server_acked();
if (uip_newdata())
{
if((tcp_server_sta&(1<<6))==0)
{
if(uip_len>199)
{
((u8*)uip_appdata)[199]=0;
}
strcpy((char*)tcp_server_databuf,uip_appdata);
tcp_server_sta|=1<<6;
}
}
if(uip_rexmit()||uip_newdata()||uip_acked()||uip_connected()||uip_poll())
{
tcp_server_senddata();
}
}
一周热门 更多>