当把udp接收到的数据立刻发送回PC,正常。程序如下:
void recv_callback_tftp(void *arg, struct udp_pcb *upcb, struct pbuf *pkt_buf,
struct ip_addr *addr, u16_t port)
{
struct ip_addr devaddr;
struct ip_addr destAddr = *addr; /* 获取远程主机 IP 地址 */
if(pkt_buf != NULL) /* 如果收到的数据不为空 */
{
udp_sendto(upcb,pkt_buf,&destAddr,port);
}
pbuf_free(pkt_buf); /* 释放缓冲区数据 */
}
但是把接收到的数据稍微处理一下,放到其他一个buf中进行发送,每次都直接进入void HardFault_Handler(void){}里了呢。 程序如下:
void recv_callback_tftp(void *arg, struct udp_pcb *upcb, struct pbuf *pkt_buf,
struct ip_addr *addr, u16_t port)
{
unsigned char n;
unsigned char tmp8[20];
struct ip_addr devaddr;
struct ip_addr destAddr = *addr;