Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
手把手教你如何在没有开发板的情况下学习RT-Thread——RT-Th...
发布于 2020-01-08 09:36:34 浏览:2174
订阅该版
[tocm] * 本帖最后由 Sanjay_Wu 于 2020-1-8 09:37 编辑 * #### 前言 > 细心的朋友可能发现,RT-Thread的bsp目录下有一个simulator文件夹,simulator可以用于模拟开发板环境进行学习RT-Thread,本文将详细讲述如何在没有开发板环境下学习RT-Thread。使用[visual studio 2015](https://www.cnblogs.com/ansen312/p/5865723.html)作为编译器,因为在这里我还搭建了虚拟LCD。 #### 一、搭建RT-Thread simulator环境 ###### 1、[下载RT-Thread源码](https://www.rt-thread.org/page/download.html) 我是在Windows环境下开发的,使用[git工具](https://git-scm.com/download/win)从码云克隆RT-Thread源代码,我克隆的是最新版本,这里推荐使用码云克隆,因为这样会快很多。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107200514735.png)) ###### 2、使用[ENV工具](https://www.rt-thread.org/page/download.html)运行scons命令生成Visual Studio工程 (1)、打开 t-thread\bsp\目录下的simulator文件夹,可以看到有vs2005和vs2012工程模板,可以阅读readme.txt了解如何搭建环境。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107201010551.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) (2)、使用ENV工具运行`scons --target=vs -s`或者`scons --target=vs`命令生成vs2005工程。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107201418677.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) (3)、生成工程之后,发现多了一个如下的文件,使用VS2015打开它。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107201517275.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ###### 3、使用Visual Studio 2015编译 (1)、使用VS2015打开`project.vcproj`文件,弹出如下窗口都点击确定。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/2020010720171710.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107201729831.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) (2)、按快捷键`F5`进行编译,编译完成之后会弹出如下窗口,至此环境搭建完成,可以开始进行RT-Thread的学习了,需要添加自己的文件,可以在解决方案资源管理器添加。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107202059262.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107202229156.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70)
#### 二、编写一个线程测试 ###### 1、创建一个线程 (1)、打开`application.c文件`,在里面添加如下代码创建一个线程。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107203009467.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ```c void test_thread_entry(void *parameter) { while (1) { rt_kprintf("Hello RT-Thread Simulator
"); rt_thread_mdelay(500); } } void test_thread_start(void) { rt_thread_t test_thread = RT_NULL;; test_thread = rt_thread_create("test", test_thread_entry, RT_NULL, 512, RT_THREAD_PRIORITY_MAX / 2 - 5, 50); if (test_thread != RT_NULL) { rt_thread_startup(test_thread); } } ``` (2)、将`test_thread_start`放在`rt_init_thread_entry`里面。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107203152673.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ###### 2、编译运行工程 > 可以看到运行效果如下,线程能正常创建。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200107202817668.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70)
#### 三、移植虚拟LCD ###### 1、下载虚拟LCD文件 ![虚拟LCD.zip](/uploads/202001/08/093715gfoq00wkiedfefwf.zip) ###### 2、移植到VS工程 (1)、下载后解压压缩包文件,可以看到包含如下文件。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/2020010809135740.png)) (2)、将这些文件放在simulator目录下。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108091445754.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) (3)、关闭原先的VS工程,使用ENV工具重新运行`scons --target=vs -s`命令生成工程。 (4)、打开新生成的VS工程,可以看到相关文件已经加入工程了。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108091749150.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ###### 3、初始化虚拟LCD (1)、打开`board.h`文件,在里面包含`lcd.h`头文件。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/2020010809195458.png)) (2)、打开`board.c`文件,`rt_hw_board_init`函数里面加入LCD初始化函数。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108092030770.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ###### 4、测试LCD显示字符串 (1)、在`application.c`的`test_thread_entry`加入这段代码。 ```c lcd_show_string(100, 100, (8 * rt_strlen("Hello RT-Thread Simulator")), 16, "Hello RT-Thread Simulator", 16, 1); ``` ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108092220347.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) (2)、按快捷键`F5`编译工程,可以看到已经生成虚拟LCD界面,并显示字符串在上面。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108092416626.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70) ###### 5、修改虚拟LCD分辨率 (1)、打开`lcd.h`文件,找到如下代码,可以根据实际需要修改分辨率大小。 ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108092540262.png)) (2)、修改后效果,例如把分辨率改为320*320。 ```c #define LCD_WIDTH 240 #define LCD_HEIGHT 240 ``` ![在这里插入图片描述](![FastAdmin](https://img-blog.csdnimg.cn/20200108092744888.png)?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NhbmpheV9XdQ==,size_16,color_FFFFFF,t_70)
查看更多
1
个回答
默认排序
按发布时间排序
andychen
2020-01-08
这家伙很懒,什么也没写!
是个很老的BSP了,看了下BSP还提供了贪吃蛇程序
撰写答案
登录
注册新账号
关注者
0
被浏览
2.2k
关于作者
Sanjay_Wu
这家伙很懒,什么也没写!
提问
13
回答
32
被采纳
0
关注TA
发私信
相关问题
推荐文章
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组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
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
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部