1、概述
在“01-基于ART-PI-创建第一个RT-Threaad-软件工程”一文中,我介绍了如何创建一个基于RT-Thread的软件工程,在本文中,我将基于这个创建的软件工程添加一个USB CDC虚拟串口设备。
考虑到RT-Thread内核版本不同,在创建软件工程时可能会出现一些意外的问题,我补充说明一下我所使用的软件编程环境。
序号 | 资源名称 | 说明 | 备注 |
1 | RT-Thread Studio 2.2.7 | 睿赛德官方提供的软件集成开发环境,可自行下载安装。 | |
2 | ART-PI | 一款基于STM32H750芯片的开发板,可自行上网检索关键字找到相关的资料,某宝可以买到。 |
此开发板已经板载STM-LINK调试下载器,无需再使用Jlink、st-link或其它的调试下载器。
2、创建USB CDC虚拟串口设备
第1步,打开RT-Thread Studio。
见图2-2-1,RT- Studio启动成功。
见图2-2-2,点击“File->Import”菜单进入软件工程导入界面。
见图2-2-3,选择导入的软件工程类型,然后点击”Next“进入下一个步骤。
见图2-2-4,选择软件工程所在的文件目录,选择软件工程,然后点击”Finish“完成软件工程的导入。
见图2-2-5,软件工程导入成功。
第3步,编译软件工程。
见图2-3-1,点击选择软件工程,按下”CTRL+B“快捷键编译软件工程。
见图2-3-2,软件工程编译中,稍等片刻。
见图2-3-3,软件工程编译完成。
第4步,下载固件到目标板中运行。
见图2-4-1,点击图标下载代码。
见图2-4-2,代码下载中,稍等片刻。
见图2-4-3,代码下载成功,并运行到了main()函数入口处。点击图标全速运行代码。
第5步,PC端启动Putty查看固件运行结果。
见图2-5-1,启动Putty成功。
见图2-5-2,选择ART-PI在在电脑端虚拟出的USB串口号,然后点击”Open“进入Putty的工作界面。
见图2-5-3,Putty界面已经接收到了ART-PI发送过来的信息。
第6步,启动STM32Cub,用于配置MCU。
见图2-6-1,双击”CubeMX Setting“菜单项启动配置界面。
见图2-6-2,STM32CubeMX启动中,稍等片刻。
见图2-6-3,STM32CubeMX启动出现提示界面,选择”Yes“进入下一步。
见图2-6-4,启动进行中,继续等待。
见图2-6-5,STM32CubeMX启动完成。
第7步,配置USB接口。
见图2-7-1,配置好USB接口。
第8步,配置系统时钟。
见图2-8-1,将系统时钟配置为外部高速时钟模式。
见图2-8-2,ART-PI使用的外部晶振为25M,已经通过合适的配置将系统时钟配置为480M。
见图2-8-3,已经将所有的频率配置为最大值。
见图2-8-4,已经为USB端口配置了48M时钟源。
见图2-8-5,USB接口的时钟已经被正确地配置为48M。
第9步,设置STM32CubeMX输出的软件工程类型。
见图2-9-1,软件工程的输出类型设置为STM32CubeIDE,这与RT-Thread Studio相同,都为基于gnu arm-gcc类型的软件工程,STM32CubeIDE与RT-Thread Studio二者也都是基于Eclipse进行二次开发的集成软件开发环境。
第10步,使用STM32CubeMX生成代码。
见图2-10-1,点击生成代码。
见图2-10-2,出现提示信息,点击”Yes“继续。
见图2-10-3,代码生成中,稍等片刻。
见图2-10-4,代码生成完成,点击”Close“。
见图2-10-5,点击 X 关闭STM32CubeMX。
见图2-10-6,RT-Thread Studio出现提示信息,点击”OK“。
第11步,编译软件工程,确认软件工程是否有异常。
见图2-11-1,软件工程编译完成,未出现异常。
第12步,下载代码运行固件。
见图2-12-1,Putty窗口可以接收到固件运行的LOG信息。
第13步,在RT-Thread的软件工程中,启用USB选项。
见图2-13-1,打开board.h文件,找到这句代码行:
/*#define BSP_USING_USBDEVICE*/
修改代码,使能USBDEVICE设备的配置选项。
见图2-13-2,代码修改完成。
第14步,配置USB设备的类型。
见图2-14-1,双击进入配置界面。
见图2-14-2,等待启动完成。
见图2-14-3,配置界面启动完成。
见图2-14-4,移动鼠标至某一个图标处,将出现浮动菜单,点击”config“进入下一个界面。
见图2-14-5,滚动界面,找到USB配置选项。
见图2-14-6,找到了USB配置项。
见图2-14-7,使能USBDEVICE设备,设备类型为USB CDC。然后点击左上角的保存配置结果。
见图2-14-8,软件工程已经被成功更新。
第15步,编译软件工程。
见图2-15-1,软件工程编译成功。
第16步,下载固件到目标板中运行。
见图2-16-1,在PC端已经枚举出了一个USB CDC串口设备COM43。
第17步,USB CDC通信测试。
见图2-17-1,编写一段测试代码,通过USB CDC向PC端发送一个字符串。然后编译并下载到目标板运行。
见图2-17-2,PC端的串口助手已经接收到数据,注意串口助手的DTR选项需要勾选上,否则串口助手不会接收数据。
至此,已经在ART-PI开发板上基于RT-Thread成功创建了一个USB CDC 虚拟串口设备。
3、附件:测试代码
int main(void)
{
char test_str[] = "vcom is ready!\r\n";
rt_err_t res;
rt_device_t vcom_dev;
while (1)
{
rt_thread_mdelay(1000);
vcom_dev = rt_device_find("vcom");
if( vcom_dev != RT_NULL )
{
res = rt_device_open(vcom_dev, RT_DEVICE_OFLAG_RDWR);
if( res == RT_EOK )
{
rt_device_write(vcom_dev, 0, test_str, strlen(test_str));
rt_thread_mdelay(10);
rt_device_close(vcom_dev);
}
}
}
return RT_EOK;
}