MQTT移植到stm32开发板——使用RT-Thread操作系统

ENV介绍

env 是 RT-Thread 推出的开发辅助工具,针对基于 RT-Thread 操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的 menuconfig 提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由裁剪,使系统以搭积木的方式进行构建。

env 工具包含了 RT-Thread 源代码开发编译环境和软件包管理系统。

env工具下载安装

从 RT-Thread 官网下载 env 工具。地址:https://www.rt-thread.org/page/download.html

在电脑上装好 git,git 的下载地址为 https://git-scm.com/downloads ,根据向导正确安装 git,并将 git添加到系统环境变量。软件包管理功能需要 git 的支持。

注意在工作环境中,所有的路径都不可以有中文字符或者空格。

通过env移植MQTT客户端

打开 env 控制台

RT-Thread 软件包环境主要以命令行控制台为主,同时以字符型界面来进行辅助,使得尽量减少修改配置文件的方式即可搭建好 RT-Thread 开发环境的方式。

打开env控制台有两种方式:

  • 方法一:点击 env 目录下可执行文件进入 env 目录,可以运行本目录下的 env.exe ,如果打开失败可以尝试使用 env.bat 。

  • 方法二:在文件夹中通过右键菜单打开 env 控制台env ,可以根据下图的步骤操作,就可以在任意文件夹下通过右键菜单来启动 env 控制台:

    Add_Env_To_Right-click_Menu

打开env并更新软件包列表

scons 是 RT-Thread 使用的编译构建工具,可以使用 scons 相关命令来编译 RT-Thread 。

  • 第一步:下载rt-thread的源码,可以在github或者gitee下载:

    • github

      git clone https://github.com/RT-Thread/rt-thread.git
      
    • gitee

      git clone https://gitee.com/RT-Thread/rt-thread.git
      
  • 第二步:切换到 bsp 根目录:打开控制台后,可以在命令行模式下使用 cd 命令切换到你想要配置的 bsp 根目录中。例如工程目录为 H:\jiejieTop\rt-thread\bsp\stm32\stm32f429-fire-challenger,或者直接到这个目录下右键打开env:

    mqtt-rtt-001

  • 第二步:更新软件包列表,随着 package 系统的不断壮大,会有越来越多的软件包加入进来,所以本地看到 menuconfig 中的软件包列表可能会与服务器 不同步 。在env环境中使用 pkgs --upgrade 命令即可解决该问题,这个命令不仅会对本地的包信息进行更新同步,还会对 env 的功能脚本进行升级,建议定期使用,或者在 env\packages\packages 目录下手动更新,然后切换最新分支即可。

    mqtt-rtt-002

    mqtt-rtt-003

移植MQTT客户端

  • 第一步:在env环境中运行 menuconfig 命令进入可视化配置界面,在Hardware Drivers Config → Onboard Peripheral Drivers路径下使能以太网驱动:

    mqtt-rtt-004

  • 第二步:在RT-Thread Components → Network → Network interface device路径下使能使能网络接口:

    mqtt-rtt-005

  • 第三步:在RT-Thread online packages → IoT - internet of things路径下选择kawaii-mqtt软件包:

    mqtt-rtt-006

  • 第四步:按下回车,进入kawaii-mqtt软件包的配置页面,可以随意配置信息,我们勾选 enable test 即可,这一步操作会将测试代码添加到工程中:

    mqtt-rtt-007

  • 第五步:在退出的时候会进行下载软件包,将kawaii-mqtt软件包下载到本地,并且将其添加到工程中,然后你可以通过scons --target=mdk5命令生成keil工程,当然也可以不用。

    mqtt-rtt-008

  • 第六步:打开keil工程,因为我们勾选了 enable test ,此时工程中存在测试代码,我们需要间本身的main.c文件的例程注释掉,然后再进行编译,没有问题。

    mqtt-rtt-009

  • 第七步:下载到开发板上,观察现象,可以看到完全根据代码运行。

编写自己的代码:

MQTT提供在线配置工具,可以使用工具生成相应的代码:https://jiejietop.gitee.io/mqtt/index.html

在线代码生成工具

与此同时该工具页面还包含了mqttclient的API接口介绍及示例,通过它们就能知道这个工具应该配置了什么内容。

mqtt-tool-api

连接参数配置

首先连接参数代表着MQTT客户端应该如何连接到服务器,建立MQTT会话应该是如何配置,这些就是连接参数

  • 与服务器相关的参数有:

    • 服务器地址。

    • 服务器端口号。

    • 服务器CA证书(如果有TLS加密的话)。

  • 建立MQTT连接需要的参数有:

    • MQTT协议版本。

    • 用户名。

    • 密码。

    • 客户端ID。

    • 配置是否清除会话,默认清除会话。

    • 心跳时间间隔,默认是50秒。

    • 是否使用遗嘱。

    • 是否保留遗嘱消息。

    • 设置遗嘱主题。

    • 设置遗嘱消息的服务质量等级。

    • 设置遗嘱消息的内容。

  • 与与客户端资源相关的配置:

    • 设置命令的超时,它主要是用于socket读写超时,默认是5000毫秒。

    • 读缓冲区大小,默认是1024。

    • 写缓冲区大小,默认是1024。

mqtt-tool-connect

订阅主题相关的代码配置

此配置用于配置MQTT客户端订阅的主题信息,指定订阅主题名字,服务质量等级以及当收到来自这个主题消息时候的回调处理函数(可以为NULL),mqttclient代码生成工具支持动态添加多个主题,满足绝大部分的日常需求。

mqtt-tool-sub

发布消息相关的代码配置

mqttclient代码生成工具支持动态添向多个主题发布消息,满足绝大部分的日常需求。只需指定要发布消息的主题名字、服务质量等级、以及发布的消息内容即可。

mqtt-tool-pub

生成代码

在配置完成后,点击下方的生成代码按钮,即可生成对应的配置代码。当然,你也可以点击导入模板,使用模板默认的配置来生成代码。

mqtt-tool-code

直接将生成的代码复制到你的main.c文件即可编译运行。

导出独立的MQTT客户端工程

在env中,可以通过scons --dist命令来导出工程代码,形成一个独立的demo,因为处于rt-thread工程中,整个代码实在是太庞大了,我们只需要导出我们用到的代码即可:

mqtt-rtt-010

mqtt-rtt-011

整个工程就移植完毕。

猜你喜欢

转载自blog.csdn.net/jiejiemcu/article/details/106892545