3537| 0
|
[项目教程] 【移植系列--裸机版本】官方裸机版本代码全解析(一) |
本教程是对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; |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed