Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread Studio
IoT_Board
邮件应用
手把手教你用STM32发送带附件的邮件 (一)
发布于 2020-07-04 00:01:37 浏览:2189
订阅该版
[tocm] ## 项目介绍 本项目基于正点原子潘多拉开发板,使用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](/uploads/20200703/2c594c4f6974261fcc9b6f34390688cb.png) 我们将该例程在当前文件夹复制一份,并且命名为 smtp_test: ![image.png](/uploads/20200703/356e62eebfe1914a33167fa992429ecf.png) 至此我们就拥有了我们自己的一个工程,由于我们是使用RT-Thread Studio进行开发,而该开发包是基于MDK的工程,所以接下来我们需要在RT-Thread Studio中导入该工程。 ### RT-Thread Studio 导入工程 打开RT-Thread Studio,选择 文件 - 导入 - RT-Thread - MDK/IAR 项目到工作空间中 : ![image.png](/uploads/20200703/bf57a7e1f5cea25524440932ad91659b.png) 点击下一步,选择我们刚才所建立的工程文件夹中的project.uvprojx文件,点击打开: ![image.png](/uploads/20200703/a51171ef574233b665f4b9cfc985b1c4.png) 将工程名称命名为:SMTP,点击完成。 ![image.png](/uploads/20200703/f6798d75b4cb4219f04684c9287acea8.png) 此时我们就把之前建立的工程顺利导入到了RT-Thread Studio中了: ![image.png](/uploads/20200703/f8eeaa237b937d6d4b1091daacf74257.png) ### RT-Thread Studio 配置 由于我们的原始工程使用的是ARMCC工具链,而RT-Thread Studio使用的是GCC工具链,因此我们还需要进行一些配置才能使工程能够正常下载运行。 **一、库文件准备** 本项目中我们需要用到WIFI操作的库文件以及OTA的库文件,WIFI库文件包含了对WIFI模块的操作接口,而OTA库文件则负责WIFI固件的校验及搬运,在这里我们只需将其正确配置如工程即可,无需对其进行深入的了解。 我们打开 IoT_Board - libraries 文件夹,可以看到里面包含了一些库,我们需要的文件就在 rt_ota 文件夹 与 wifi 文件夹中。 ![image.png](/uploads/20200703/26ec5416ea596348534a4439a595a212.png) 接下来我们需要将这两个文件夹中的库文件加入到我们的工程中。因为我们的工程是通过MDK工程导入的,如果我们直接修改原本工程的文件结构会出现一些问题,所以在此我们不会将文件添加到原工程已存在的目录中,而是在原工程的基础上新建文件夹并将我们后续的新文件添加到新目录中。 首先我们打开RT-Thread Studio,在我们的工程中新建一个目录,命名为 board : ![image.png](/uploads/20200703/009ace1be036b91aff61c49cc613a949.png) 建立文件夹后,我们右击新建的文件夹选择打开资源所在目录。我们新建的board文件夹就位于此目录下。 ![image.png](/uploads/20200703/fe1775dbb6314d9e63397d0eb8a24260.png) 将刚才我们打开的libraries中的rt_ota与wifi文件夹复制到board文件夹下。 ![image.png](/uploads/20200703/1b045b5569d4d9ecb4fe1d7f3cd71625.png) 此时我们的库文件就已经准备下,接下来要在RT-Thread Studio中进行相应的配置,将这些库文件加入到工程中。 **二、库文件配置** 右击工程名,选择刷新,此时我们就能在工程目录中看到我们加入的新文件: ![image.png](/uploads/20200703/3222dc62ff78c1c967236ddcbbb207b7.png) ![image.png](/uploads/20200703/49dfe2c0cb6c39f441b2cf7deedfc4a0.png) 我们展开这两个文件夹目录,可以看到我们所加入的所有文件: ![image.png](/uploads/20200703/0ff679a9c7da0c0148b755029b9d6dec.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](/uploads/20200703/74d38a7e648dfc59c52fafef3077a4c6.png) 在弹出的对话框中选择 工作空间 ,选择我们刚才加入的 rt_ota.h 的文件路径,点击确定: ![image.png](/uploads/20200703/ed3128d4b48571738d448cd29c10b632.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](/uploads/20200703/c55c502e2561e9e131c1c12ba045b6c9.png) 库文件加入后还需加入库文件的路径,点击下方 Library search path (-L) 右侧的添加图标,按照添加头文件路径的方式将两个库文件的路径添加入工程中: ![image.png](/uploads/20200703/8c5688f7f0812c79836cbdfca7f904e5.png) ![image.png](/uploads/20200703/cca32cbdd742eb05cd3a2afe0449b996.png) 至此库文件的添加操作已经完成,点击应用并关闭保存配置。 ![image.png](/uploads/20200703/5e67dcb139fdc2bb487124235f916c8d.png) 若此时弹出一个对话框,点击 是 即可。 ![image.png](/uploads/20200703/6a6226b65f69146e24cc5a85aa0c8299.png) **三、链接文件配置** 接下来我们需要添加链接文件,由于本工程原本是MDK工程,不存在用于GCC的链接文件,因此我们需要创建一个链接文件。当然,我们并不想从头开始写一个链接文件,好在RT-Thread Studio可以生成一个新的针对于STM32L475的工程,又因为其是 RT-Thread Studio 生成的,所以它自带GCC的链接文件,我们只需将其拷贝到我们的工程中即可。 **3.1、新建模板工程** 点击 文件 - 新建 - RT-Thread项目,随意输入一个项目名,选择 基于BSP,选择 stm32l475-atk-pandora,选择 ST-LINK接口,点击完成。 ![image.png](/uploads/20200703/8ab37c5ea5937f18b40c6cc1c4fa3a58.png) **3.2、拷贝链接文件** 进入新生成的项目目录下的 board - link_scripts , 将该目录下的 link.lds 拷贝到我们自己项目中的 board 文件夹下: ![image.png](/uploads/20200703/085102b04b203111dc1548588a1a27df.png) 再次刷新我们的工程,此时可以看见目录下已经有了link.lds文件: ![image.png](/uploads/20200703/97829f6f023138fba5f7a1bf44f9b6d6.png) 同理,我们需要将该文件加入到编译环境中。打开项目属性,选择 C/C++ 构建 - Cross ARM C Linker - General,点击添加图标将我们的链接文件添加入Script files中: ![image.png](/uploads/20200703/356425049c2d377d472942c66b89edd3.png) 添加完后点击 应用并关闭 按钮。此时我们的项目就算是部署成功了,接下来我们先测试一下工程是否可以正常编译运行。 ### 测试工程 首先我们进入 Applications - main.c 文件中修改 WLAN_SSID 与 WLAN_PASSWORD 两个宏定义,它们分别对应我们所要连接的无线网用户名和密码。只有正确配置了无线网的用户名与密码才能使开发板连上WIFI。 ![image.png](/uploads/20200703/d86d423d6d060154148f13ddc43fead2.png) 修改成功后点击软件上方工具条的编译图标进行项目编译: ![image.png](/uploads/20200703/3acbd21b13b9ae325cecc750de950778.png) 当RT-Thread Studio下方控制台显示 Build Finished 提示后表明编译成功。 ![image.png](/uploads/20200703/b97906456a2ddb82b960742b7213ff13.png) 此时我们点击上方工具条的下载按钮右侧的小箭头,选择ST-LINK: ![image.png](/uploads/20200703/e4b010b2d2d0858b3fa1cab89ee6e530.png) 选择完成后确保开发板与电脑相连,同时打开串口调试工具,打开开发板所对应的连接端口,准备查看开发板的运行日志,点击下载按钮下载程序: ![image.png](/uploads/20200703/2dec4c8be879004f60c2d7bf97a02ee8.png) 等待下载完成后,查看串口调试工具,若此时开始打印如下数据,则程序下载成功: ![image.png](/uploads/20200703/db74885fbdad895c66d8895366ff17e3.png) 开发板启动流程完成后,会自动连接刚才配置的WIFI,若连接成功,则会打印出获取的IP地址信息: ![image.png](/uploads/20200703/952609517158a9f49c6fd0666a07dd1c.png) 此时标志着我们的工程在RT-Thread Studio下部署完成,接下来我们就可以进行应用的开发了
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
WKJay
wkjay.com
文章
10
回答
135
被采纳
24
关注TA
发私信
相关文章
1
rt_thread studio 啥时候能用呢
2
RT_Thread使用反馈帖子
3
RTT studio 下的 AT指令问题。
4
什么时候RTT Sdudio支持Ubuntu,Deepin和UOS操作系统
5
rt thread Studio 关于J-LINK下载问题
6
RT-Thread studio 调试设置问题
7
RTT-Studio 如何设置调试配置参数?
8
rt_thread studio 软件包配置
9
RT-Studio目前只能开发STM32的项目吗?
10
rtt studio 生成hex名字修改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
3
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部