【移植系列--裸机版本】官方裸机版本代码全解析(一)

2019-07-265647
AI 快速预览详细 收起
本教程详细解析OneNet裸机版本代码,并逐步指导如何将代码移植到51单片机和STM32上。首先介绍了主要文件结构,包括hardware、user、onenet、net_protocol、net_device等。然后讲解了main函数中的初始化过程,包括外设初始化、定时器设置和网络设备检测。最后,通过NET_DEVICE_Init连接平台IP,并通过OneNet_DevLink接入平台。
本教程是对OneNet裸机进阶例程--麒麟座V2.5综合应用代码-EDP--这个版本的代码进行讲解,并且一步步教大家移植到51单片机上。
至于怎么移植到stm32上,看完讲解你应该也会了,移植到stm32上相对于51单片机是更加简单的。


之前在论坛发过移植好的帖子,有需要的可以去下载。https://open.iot.10086.cn/bbs/thread-19252-1-1.html

好了下面开始。
首先打开例程,左侧Project窗口如下图:
【移植系列--裸机版本】官方裸机版本代码全解析(一)图1
其中主要的是hardware、user、onenet、net_protocol、net_device这几个文件。

hardware展开如下
【移植系列--裸机版本】官方裸机版本代码全解析(一)图2
都是外设或者所用模块文件,我们对于不需要的可以删掉,这个具体到后面移植的时候在讨论。

onenet、net_protocol、net_device都是提供的结构,移植的时候在讨论。

接下来我们理一遍程序。
先看main函数。下图是还没进while之前的代码
【移植系列--裸机版本】官方裸机版本代码全解析(一)图3

oled、spilcd这些都不用看,就是一些显示信息。
进入Hardware_Init()函数
都是一些外设的初始化,包括检查模块是否正常,但是我们的wifi模块并不是在这初始化的。
Hardware_Init()函数里还初始化了两个定时器,一个用于60s定时检查网络设备状态,并根据相应情况做出处理。还有一个提供心跳、发送数据、读传感器数据的时间种子。
main()函数里while之前的两行代码是对单片机对于8266模块的IO进行初始化并复位。

下面进入while
先从最后开始看起。
【移植系列--裸机版本】官方裸机版本代码全解析(一)图4
从这看起。
上电后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,接下来看这里
【移植系列--裸机版本】官方裸机版本代码全解析(一)图5
NET_DEVICE_Init()是连接平台IP
如果成功OneNet_DevLink()接入平台。如果成功接入则oneNetInfo.netWork=1;

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -