stm32+lwip的物联网开发——学习过程(1)

注:本人拒绝重复教程内容,只写下自认为自己有所工作的地方,哪怕只是很小的一点点。
十分欢迎大家与我讨论,指出文中错误与不足之处。

2016.04.16下午13.23
由于一个IOT的项目,顺理成章地学习stm32+lwip。本来先学stm32可能会好一些,但时间原因,只能一起上了。
在看过一次视频教程,自己亲自移植了一次后,所谓“例程”一直没有成功。终于在这一刻,UCOS下终于ping通,也自己写了一个点灯的实验成功了。真正感觉自己做了点什么事,而且对于lwip,至少是最基本的lwip,还有stm32的简单应用有了初步了解。
stm32在无操作系统时,在入口函数中配好时钟参数后,进行各类初始化之后,就开始跑一个lwip_periodic_handle的函数,死循环。是一个广播函数。
在有操作系统时,直接开启os task和os,
其他的功能全在中断回调里面。

void LwIP_Pkt_Handle(void)
{
//从网络缓冲区中读取接收到的数据包并将其发送给LWIP处理
ethernetif_input(&netif);
}

//增加自己的功能是在网络缓冲区里面?

由于宿舍网需要账号密码登录,所以单片机直接接网线无法上网,所以只有单片机跟电脑连接的程序才可以实现。希望等周一路由器到手后可以进行下面的工作。

目前能够对单片机配置静态IP,可以ping通。将上述函数LwIP_Pkt_Handle改写为:
void LwIP_Pkt_Handle(void)
{
//从网络缓冲区中读取接收到的数据包并将其发送给LWIP处理
ethernetif_input(&netif);
OSTaskCreate(led1_task,(void*)0,(OS_STK*)&LED1_TASK_STK[LED1_STK_SIZE-1],LED1_TASK_PRIO);
}
能够有点灯的效果。
这表明,只要灯亮起,则电脑与单片机建立起了lwip通信,并且有收发数据包了。这与ping命令起到的功能一样,都证明了收发包的成功。
不同的是:连接成功一次后断开网线,灯还是会亮。但是ping已经无法ping通。这表明OSTaskCreate这里只是把系统任务“点灯”开启了。
之后在同一个地方又写了一个点灯的函数,不是系统任务,结果灯不亮,ping不通,无法收发数据包。这里为什么ping不通,还需要进一步学习才能明白。

希望与正在学习stm32和lwip的同学一起学习进步。
希望偶尔有懂行的老师看到给出指点批评,谢谢。

你可能感兴趣的:(嵌入式)