手把手教你用STM32发送带附件的邮件 (一)

发布于 2020-07-04 00:01:37

项目介绍

本项目基于正点原子潘多拉开发板,使用RT-Thread操作系统,实现带附件的邮件发送功能。

项目准备

RT-Thread Studio [开发工具]
RT-Thread IoT_Board SDK [开发环境]
正点原子潘多拉开发板 [硬件]

资源准备

为了加快开发流程,我们使用RT-Thread提供的IoT_Board开发包,里面已经做好了潘多拉的硬件环境,无需进行移植,我们本次的开发也是基于其中的一个demo进行,非常方便。

开发包下载:https://gitee.com/Armink/IoT_Board/repository/archive/1.1.0

最新源码:https://gitee.com/Armink/IoT_Board

现在开始

建立开发工程

下载完开发包后,进入目录:IoT_Board - examples,可以看到这里面包含了大量的例程,所有这些例程都是可以直接下载到板子运行的。

我们需要做的是邮件发送项目,因此需要有一个能够联网的例程。在此我们选择 iot_wifi_manager 例程,该例程实现了基本的wifi连接功能,在此基础上开发我们就不需要过多的涉及网络代码的编写,可以着眼于我们的邮件功能。

image.png

我们将该例程在当前文件夹复制一份,并且命名为 smtp_test:

image.png

至此我们就拥有了我们自己的一个工程,由于我们是使用RT-Thread Studio进行开发,而该开发包是基于MDK的工程,所以接下来我们需要在RT-Thread Studio中导入该工程。

RT-Thread Studio 导入工程

打开RT-Thread Studio,选择 文件 - 导入 - RT-Thread - MDK/IAR 项目到工作空间中 :

image.png

点击下一步,选择我们刚才所建立的工程文件夹中的project.uvprojx文件,点击打开:

image.png

将工程名称命名为:SMTP,点击完成。

image.png

此时我们就把之前建立的工程顺利导入到了RT-Thread Studio中了:

image.png

RT-Thread Studio 配置

由于我们的原始工程使用的是ARMCC工具链,而RT-Thread Studio使用的是GCC工具链,因此我们还需要进行一些配置才能使工程能够正常下载运行。

一、库文件准备
本项目中我们需要用到WIFI操作的库文件以及OTA的库文件,WIFI库文件包含了对WIFI模块的操作接口,而OTA库文件则负责WIFI固件的校验及搬运,在这里我们只需将其正确配置如工程即可,无需对其进行深入的了解。

我们打开 IoT_Board - libraries 文件夹,可以看到里面包含了一些库,我们需要的文件就在 rt_ota 文件夹 与 wifi 文件夹中。

image.png

接下来我们需要将这两个文件夹中的库文件加入到我们的工程中。因为我们的工程是通过MDK工程导入的,如果我们直接修改原本工程的文件结构会出现一些问题,所以在此我们不会将文件添加到原工程已存在的目录中,而是在原工程的基础上新建文件夹并将我们后续的新文件添加到新目录中。

首先我们打开RT-Thread Studio,在我们的工程中新建一个目录,命名为 board :

image.png

建立文件夹后,我们右击新建的文件夹选择打开资源所在目录。我们新建的board文件夹就位于此目录下。

image.png

将刚才我们打开的libraries中的rt_ota与wifi文件夹复制到board文件夹下。

image.png

此时我们的库文件就已经准备下,接下来要在RT-Thread Studio中进行相应的配置,将这些库文件加入到工程中。

二、库文件配置
右击工程名,选择刷新,此时我们就能在工程目录中看到我们加入的新文件:

image.png

image.png

                 

我们展开这两个文件夹目录,可以看到我们所加入的所有文件:

image.png

其中我们真正需要的是 rt_ota.h ,librt_ota_noalgo_0.1.2_stm32l4_gcc.a以及libwifi_6181_0.2.5_armcm4_gcc.a,总共三个文件。其他文件我们并不需要,因此无需关注。

首先我们需要将 rt_ota.h 所在的目录加入到工程的头文件路径中,使编译器能够找到这个头文件。

右键工程名打开右击菜单,选择 属性(参照前几次操作):

选择 C/C++ 构建 下的 设置 选项,在右侧的菜单中选择 GNU ARM Cross Compiler 下的 Includes,点击 Include path (-I)右侧的加号图标:

image.png

在弹出的对话框中选择 工作空间 ,选择我们刚才加入的 rt_ota.h 的文件路径,点击确定:

image.png

头文件路径加入后,我们还需加入两个库文件。

在之前打开的属性/设置菜单中选择 Cross Arm C Linker 下的 Libraries ,点击 Libraries (-l)右侧的添加图标,在弹出的对话框中输入 rt_ota_noalgo_0.1.2_stm32l4_gcc ,点击确定,再次点击添加图标,输入 wifi_6181_0.2.5_armcm4_gcc ,点击确定。(去掉库文件名前面的lib和结尾的.a)

image.png

库文件加入后还需加入库文件的路径,点击下方 Library search path (-L) 右侧的添加图标,按照添加头文件路径的方式将两个库文件的路径添加入工程中:

image.png

image.png

至此库文件的添加操作已经完成,点击应用并关闭保存配置。

image.png

若此时弹出一个对话框,点击 是 即可。

image.png

三、链接文件配置
接下来我们需要添加链接文件,由于本工程原本是MDK工程,不存在用于GCC的链接文件,因此我们需要创建一个链接文件。当然,我们并不想从头开始写一个链接文件,好在RT-Thread Studio可以生成一个新的针对于STM32L475的工程,又因为其是 RT-Thread Studio 生成的,所以它自带GCC的链接文件,我们只需将其拷贝到我们的工程中即可。

3.1、新建模板工程

点击 文件 - 新建 - RT-Thread项目,随意输入一个项目名,选择 基于BSP,选择 stm32l475-atk-pandora,选择 ST-LINK接口,点击完成。

image.png

3.2、拷贝链接文件

进入新生成的项目目录下的 board - link_scripts , 将该目录下的 link.lds 拷贝到我们自己项目中的 board 文件夹下:

 image.png
     

       

再次刷新我们的工程,此时可以看见目录下已经有了link.lds文件:

image.png

同理,我们需要将该文件加入到编译环境中。打开项目属性,选择 C/C++ 构建 - Cross ARM C Linker - General,点击添加图标将我们的链接文件添加入Script files中:

image.png

添加完后点击 应用并关闭 按钮。此时我们的项目就算是部署成功了,接下来我们先测试一下工程是否可以正常编译运行。

测试工程

首先我们进入 Applications - main.c 文件中修改 WLAN_SSID 与 WLAN_PASSWORD 两个宏定义,它们分别对应我们所要连接的无线网用户名和密码。只有正确配置了无线网的用户名与密码才能使开发板连上WIFI。

image.png

修改成功后点击软件上方工具条的编译图标进行项目编译:

image.png

当RT-Thread Studio下方控制台显示 Build Finished 提示后表明编译成功。

image.png

此时我们点击上方工具条的下载按钮右侧的小箭头,选择ST-LINK:

image.png

选择完成后确保开发板与电脑相连,同时打开串口调试工具,打开开发板所对应的连接端口,准备查看开发板的运行日志,点击下载按钮下载程序:

image.png

等待下载完成后,查看串口调试工具,若此时开始打印如下数据,则程序下载成功:

image.png

开发板启动流程完成后,会自动连接刚才配置的WIFI,若连接成功,则会打印出获取的IP地址信息:

image.png

此时标志着我们的工程在RT-Thread Studio下部署完成,接下来我们就可以进行应用的开发了

0 条评论

发布
问题

分享
好友