【移植系列--裸机版本】官方裸机版本代码全解析(一)
本教程是对OneNet裸机进阶例程--麒麟座V2.5综合应用代码-EDP--这个版本的代码进行讲解,并且一步步教大家移植到51单片机上。至于怎么移植到stm32上,看完讲解你应该也会了,移植到stm32上相对于51单片机是更加简单的。
之前在论坛发过移植好的帖子,有需要的可以去下载。https://open.iot.10086.cn/bbs/thread-19252-1-1.html
好了下面开始。
首先打开例程,左侧Project窗口如下图:
其中主要的是hardware、user、onenet、net_protocol、net_device这几个文件。
hardware展开如下
都是外设或者所用模块文件,我们对于不需要的可以删掉,这个具体到后面移植的时候在讨论。
onenet、net_protocol、net_device都是提供的结构,移植的时候在讨论。
接下来我们理一遍程序。
先看main函数。下图是还没进while之前的代码
oled、spilcd这些都不用看,就是一些显示信息。
进入Hardware_Init()函数
都是一些外设的初始化,包括检查模块是否正常,但是我们的wifi模块并不是在这初始化的。
Hardware_Init()函数里还初始化了两个定时器,一个用于60s定时检查网络设备状态,并根据相应情况做出处理。还有一个提供心跳、发送数据、读传感器数据的时间种子。
main()函数里while之前的两行代码是对单片机对于8266模块的IO进行初始化并复位。
下面进入while
先从最后开始看起。
从这看起。
上电后checkInfo.NET_DEVICE_OK = DEV_ERR进入判断里。
timerCount 是在定时中断里自加的。NET_TIME初始值为60.
如果60s还是DEV_ERR,那么就重新复位。
NET_DEVICE_Exist() 进行网络设备检测。
进去看看。
新版本的8266默认是AP+STA模式。
所以要么是wifi配网,要么是直接连热点。
如果成功那么就checkInfo.NET_DEVICE_OK=DEV_OK
oneNetInfo.netWork 初始也为0,接下来看这里
NET_DEVICE_Init()是连接平台IP
如果成功OneNet_DevLink()接入平台。如果成功接入则oneNetInfo.netWork=1;
页:
[1]