2019-7-26 09:50:04 [显示全部楼层]
3537浏览
查看: 3537|回复: 0

[项目教程] 【移植系列--裸机版本】官方裸机版本代码全解析(一)

[复制链接]
本教程是对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;

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail