0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RT-thread STM32F103 USB虚拟串口配置步骤

冬至子 来源:浪花雷雨 作者:浪花雷雨 2023-10-27 12:32 次阅读

RT-thread STM32F103 USB虚拟串口配置

一、使用的环境
硬件环境:
芯片STM32F103VET6,外部晶振8M,USB电路接口如下图,USB做从设备时,D+引脚要上拉到高电平,这里控制PA8引脚输出低电平即可使能D+为高电平。

1.jpg

软件环境:
代码编辑和编译软件:RT-Thread Studio 1.1.2;RTOS:rt-thread4.0.2;Windows的串口驱动:VCP_V1.4.0_Setup.exe

二、移植修改过程
(一)基础工程的创建
1.项目工程创建
选择RT-Thread Studio的文件->新建->RT-Thread项目
1.jpg

2.选择保存的目录,选择使用的芯片,选择串口及引脚,选择下载工具
1.jpg

3.生成的工程使用内部时钟(在drv_clk.c文件中),往串口输出信息,这个工程可以直接编译下载到芯片中校验工程的正确性。
1.jpg

(二)使用CubeMX生成时钟配置和外设配置
1.在CubeMX中选择使用的STM32F103VE芯片创建工程
1.jpg

2.选择RCC项为外部高速时钟为晶振;选择USB项打开使能,选择USB的IP包;设置时钟频率,主时钟设置为73Mhz,USB时钟设置为48Mhz,cubeMX自动计算分频系数。
1.jpg

2.jpg

3.jpg

3.设置工程选项,生成工程代码。
1.jpg

(三)RT-thread工程修改
1.时钟配置修改
从CubeMX工程的main.c文件中拷贝SystemClock_Config函数的内容覆盖RT-Thred studio工程drv_clk.c文件中的SystemClock_Config函数中的内容,让时钟能使用外部晶振。
1.jpg

2.进行RTOS内核配置,保存。
1.jpg

3.因为STM32F103的时钟要单独打开,在drv_clk.c文件中的SystemClock_Config函数中增加USB的时钟使能,在stm32f1xx_hal_conf.h打开HAL库的USB相关代码编译选项。
1.jpg

2.jpg

4.配置驱动
打开rtconfig.h文件,在USB驱动配置的地方增加USB设备的BSP定义选项和D+上拉电平控制引脚(从drv_gpio.c中按照对应的管脚查到对应的控制编号,如果D+已经接到搞电平可以不用添加这个控制),修改USB_VENDOR_ID 为0x0483,修改USB_PRODUCT_ID为 0x5740(需改这两项才可以使用ST提供的Windows虚拟串口驱动,否则设备被识别为其他设备)
1.jpg

2.jpg

3.jpg

5.main.c函数修改
/ 用于接收消息的信号量 /
static struct rt_semaphore rx_sem;
static rt_device_t serial;

/ 接收数据回调函数 /
static rt_err_t uart_input(rt_device_t dev, rt_size_t size)
{
/ 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 /
rt_sem_release(&rx_sem);

return RT_EOK;
}
static void serial_thread_entry(void parameter)
{
char ch;
while (1)
{
/ 从串口读取一个字节的数据,没有读取到则等待接收信号量 /
while (rt_device_read(serial, -1, &ch, 1) != 1)
{
/ 阻塞等待接收信号量,等到信号量后再次读取数据 /
rt_sem_take(&rx_sem, RT_WAITING_FOREVER);
}
/ 读取到的数据通过串口错位输出 */
rt_device_write(serial, 0, &ch, 1);
}
}
int main(void)
{
int count = 1;
int err = 0;
rt_thread_t tid;
char buf[] = “hello rt-thread!rn”;
serial = rt_device_find(“vcom”);
if (!serial)
{
rt_kprintf(“find failed!n”);
return RT_ERROR;
}
err = rt_device_init(serial);
if (!serial)
{
rt_kprintf(“find failed!n”);
return RT_ERROR;
}
err = rt_device_open(serial, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX);

//初始化信号量
rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
// 设置接收回调函数
rt_device_set_rx_indicate(serial, uart_input);
rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10);
if (thread != RT_NULL)
{
rt_thread_startup(thread);
}
while (count++)
{
rt_device_write(serial, 0, buf, rt_strlen(buf));
LOG_D("Hello RT-Thread!");
rt_thread_mdelay(1000);
}
return RT_EOK;
}
5.测试收发,串口工具要打开DTR控制
1.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • USB接口
    +关注

    关注

    9

    文章

    699

    浏览量

    55564
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119406
  • 虚拟串口
    +关注

    关注

    3

    文章

    62

    浏览量

    13864
  • RT-Thread
    +关注

    关注

    31

    文章

    1269

    浏览量

    39891
  • STM32F103VET6
    +关注

    关注

    12

    文章

    18

    浏览量

    15564
收藏 人收藏

    评论

    相关推荐

    RT-Thread实现USB虚拟串口的过程记录

    记录——基于 RT-Thread 实现 USB 虚拟串口记录一下我在正点原子 F429 阿波罗开发板上实现
    发表于 01-26 06:31

    RT-thread STM32F103 USB虚拟串口移植修改过程

    工程drv_clk.c文件中的SystemClock_Config函数中的内容,让时钟能使用外部晶振。2.进行RTOS内核配置,保存。3.因为STM32F103的时钟要单独打开,在drv_clk.c文件
    发表于 08-01 15:41

    STM32F103RT-Thread怎样设置串口1.5 个停止位呢?

    STM32F103RT-Thread怎样设置串口1.5 个停止位呢?求大神解答
    发表于 04-17 15:52

    RT-Thread STM32 配置指南

    105,STM32F107 则叫做 CL 系列,所以当您使用 RT-Thread 时,请先确定您使用的芯片型号,在软件的配置上主要是两 个地方(在工程的选项中): 在上图中选择左边的芯片型号,例如
    发表于 09-12 15:13 24次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>STM32</b> <b class='flag-5'>配置</b>指南

    记录——基于 RT-Thread 实现 USB 虚拟串口

    记录——基于 RT-Thread 实现 USB 虚拟串口记录一下我在正点原子 F429 阿波罗开发板上实现
    发表于 12-02 17:21 6次下载
    记录——基于 <b class='flag-5'>RT-Thread</b> 实现 <b class='flag-5'>USB</b> <b class='flag-5'>虚拟</b><b class='flag-5'>串口</b>

    RT-Thread Studio 实现USB虚拟串口/STM32开发板

    有限制,最快在20Hz左右,因此想到USB虚拟串口功能。一、在RT-Thread Studio软件中打开CubeMx使能单片机的USB注意
    发表于 12-08 15:21 6次下载
    <b class='flag-5'>RT-Thread</b> Studio 实现<b class='flag-5'>USB</b><b class='flag-5'>虚拟</b><b class='flag-5'>串口</b>/<b class='flag-5'>STM32</b>开发板

    RT-Thread系统移植到STM32f103

    RT-Thread系统移植到STM32f103
    发表于 12-09 12:51 26次下载
    <b class='flag-5'>RT-Thread</b>系统移植到<b class='flag-5'>STM32f103</b>

    RT-Thread STM32 配置系统时钟(使用外部晶振)

    RT-Thread STM32 配置系统时钟开发环境芯片:STM32F103RCT6RT-Thread Studio: V1.0.6(现在已经更新到1.1.3,由于本人使用RTT开发已
    发表于 12-14 18:45 14次下载
    <b class='flag-5'>RT-Thread</b> <b class='flag-5'>STM32</b> <b class='flag-5'>配置</b>系统时钟(使用外部晶振)

    笔记:基于RT-thread初步了解rtos,利用Keil 模拟器 STM32F103 上手指南。

    文章参考:RT-Thread 文档中心前期准备MDK-ARM 5.24 点击下载STM32F103 软件仿真,STM32F103 pack 文件 点击下载RT-Thread Simul
    发表于 01-12 17:38 6次下载
    笔记:基于<b class='flag-5'>RT-thread</b>初步了解rtos,利用Keil 模拟器 <b class='flag-5'>STM32F103</b> 上手指南。

    基于 Keil MDK 移植 RT-Thread Nano

    本文介绍如何基于 Keil MDK 移植 RT-Thread Nano ,并以一个 stm32f103 的基础工程作为示例进行讲解。 RT-Thread Nano 已集成在 Keil MD...
    发表于 01-26 17:04 16次下载
    基于 Keil MDK 移植 <b class='flag-5'>RT-Thread</b> Nano

    基于 RT-ThreadSTM32 上实现 USB 虚拟串口

    之前由于工作需要,基于 RT-ThreadSTM32 上实现了 USB 虚拟串口。为了方便大家,我在这里把在正点原子
    发表于 02-10 10:01 4次下载
    基于 <b class='flag-5'>RT-Thread</b> 在 <b class='flag-5'>STM32</b> 上实现 <b class='flag-5'>USB</b> <b class='flag-5'>虚拟</b><b class='flag-5'>串口</b>

    基于 RT-ThreadSTM32 上实现 USB 虚拟串口

    之前由于工作需要,基于 RT-ThreadSTM32 上实现了 USB 虚拟串口。为了方便大家,我在这里把在正点原子
    发表于 02-10 10:28 9次下载
    基于 <b class='flag-5'>RT-Thread</b> 在 <b class='flag-5'>STM32</b> 上实现 <b class='flag-5'>USB</b> <b class='flag-5'>虚拟</b><b class='flag-5'>串口</b>

    RT-Thread文档_Keil 模拟器 STM32F103 上手指南

    RT-Thread文档_Keil 模拟器 STM32F103 上手指南
    发表于 02-22 18:22 4次下载
    <b class='flag-5'>RT-Thread</b>文档_Keil 模拟器 <b class='flag-5'>STM32F103</b> 上手指南

    RT-Thread文档_野火霸道 STM32F103 上手指南

    RT-Thread文档_野火霸道 STM32F103 上手指南
    发表于 02-22 18:23 1次下载
    <b class='flag-5'>RT-Thread</b>文档_野火霸道 <b class='flag-5'>STM32F103</b> 上手指南

    RT-Thread文档_正点原子 nano STM32F103 上手指南

    RT-Thread文档_正点原子 nano STM32F103 上手指南
    发表于 02-22 18:24 5次下载
    <b class='flag-5'>RT-Thread</b>文档_正点原子 nano <b class='flag-5'>STM32F103</b> 上手指南