1. 准备工作
注意:文章还没介绍移植mqttclient和硬件设备网络相关部分的代码,所以这篇文章移植完后,还不能通过网络去连接的。主要介绍是先把mqttclient除网络之外其他部分的所有代码移植到FreeRTOS项目中,并且可以编译通过。
1.1 获取 mqttclient 源码
我们的设备端只是作为MQTT的客户端运行,所以我们只需要移植MQTT客户端源码即可。
mqttclient 源码这里使用国内一位大佬写的开源代码,可以到他下面的开源仓库地址获取。
1.2 可以运行FreeRTOS系统的MDK工程模板
这里我使用STM32CubeMX生成一个可以运行FreeRTOS系统的工程模板。可以参考下面这篇博文自己生成一个FreeRTOS系统模板。
https://blog.youkuaiyun.com/luobeihai/article/details/126061553
2. 合并mqttclient源码到FreeRTOS
2.1 复制源码到FreeRTOS工程
首先把mqttclient源码解压出来,里面包含下面一些源码目录:
主要源码目录介绍:
- common:通用的源码文件,比如链表的处理,错误代码处理等。
- mqtt:paho mqtt库文件
- mqttclient:实现mqttclient功能的主要文件
- network:网络抽象层
- platform:平台抽象层。这个目录主要是运行的系统平台,以及一些相关的平台硬件初始化代码,和我们移植过程中关联最大。目前的这篇文章的移植暂时先不实现平台网络相关的代码。
我们要移植的就是5个目录的源码文件而已(test测试例程目录文件,我们暂时还用不到,所以先不移植)。
我们在自己创建的FreeRTOS工程目录下,新建MQTTClient目录,然后把这上面5个目录文件复制到这个MQTTClient目录。
2.2 添加相关代码到MDK中
在Keil分组下面,创