stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植
背景介绍:
关于“虚拟串口” Sugar 发过一篇《RT-Thread 使用 CubeMX 的 VCP(虚拟串口)》
《软件架构训练计划》选择 CubeMX 生成代码和 RT-Thread 内核及设备代码的原因是:给小白铺路,减小“多层次”学习内容给新人带来的压力。
按 《怎样掌握 RT-Thread(RTOS 该怎么学)》中所述,训练选择 CubeMX 生成代码和 RT-Thread 代码结合,一个目的是:在了解 RT-Thread 的同时补好裸机编程的基础。
然而,训练归训练,真正做代码 Sugar 还是追求代码统一的。最终 Sugar 开源的训练代码会越来越靠近 RT-Thread,并且未来目标是带读者回归 RT-Thread 大集体中去。
虚拟串口是 Sugar 特别常用的调试手段,先从这个功能的代码级移植开始迈出回归 RT-Thread 的第一步。
虚拟串口的几个重要文件
usb_common.h、usb_device.h、ringbuffer.h
ringbuffer.c、core.c、usbdevice.c、cdc_vcom.c
未来 Sugar 会把 Git 的 Log 记录做成一本“活”的参考书,不会使用 Git 的读者可以在 MultiMCU EDU 公众号内回复 git 得到 Sugar 录的教学视频。
本篇代码的 github 地址是:https://github.com/code-structure-train/pandora_vcom
一、加入编译的文件
二、RTT新加入的文件(来自 RT-Thread 官方 master 源码)
三、CubeMX 生成的裸机代码有哪些改动
代码级移植有啥好处
写软件最基本的两件事:一、写代码;二、代码文件。
当想到“这个软件究竟是怎么回事儿”这个问题的时候,要直接回到最基本的两个点上去找答案。
一、对学习的好处:
1、明确目标功能的代码;
2、熟悉 RT-Thread 代码文件,能够体会“分”得好而产生的“管理”的美;
3、锻炼读代码能力,从优秀代码中学到优秀架构的实现方法(要“悟”才能收获)。二、对产品的好处:
1、明确 RT-Thread 目标功能代码,是将目标功能整合进自己产品的第一步;
2、对于中小型项目,往往几个文件就可以搞定一个功能,省去配置 Kconfig 和 Scons 的麻烦。
项目代码管理
中小型项目:一颜一心。
中大型项目:一颜多心。
一、中小型
小型、部分中型项目通常不轻易换硬件平台,因此叫“一心”。软件项目核心是代码,STM32 硬件平台在当下完全可以做到:只维护代码,不维护项目工程。对于小型、中型项目,Sugar 自己使用 project-generator 来维护软件,因此其自动生成工程的依赖文件(yaml 配置文件)就是代码管理的“一颜”。
本文第一张图就是 yaml 文件的对比,一眼看出工程所需的全部文件和文件位置。二、中大型
部分中型、大型项目很多都是要适配多种平台的,以 RT-Thread 为例,其除了 STM32 之外还支持很多其他硬件平台,因此叫“多心”。这种情况下想让在不同平台上使用相同习惯管理代码,就会复杂很多。官方使用的 env 环境就是借助了 KConfig 和 Scons,相应的配置文件分布在代码当中。
env 的 menuconfig 就是被统一好的“一颜”,通过简单的配置就可以操控大型项目,用着爽。
Sugar 给小白的 RTT 入门之路
只提要点,详细内容单独推文。
一、基本原则:
1、从中小型项目入手,集中精力搞懂代码(包括 RTT 内核、设备驱动和代码管理)。
2、使用 project-generator 进行项目管理,项目管理配置文件独立,不分散在代码里,对初学者非常友好(刚刚学习,不要分心去搞 KConfig 和 Scons)。
二、做了哪些:
1、《软件架构训练计划》
2、开源基于 RT-Thread 的麦轮车项目。该项目用最简单易学的算法、最简单易学的架构将编程的三大部分(逻辑、算法、参数)从功能上统一起来,同时在代码管理(功能设计和文件管理)上独立分离。
PS
现在好的开源项目太多了,Sugar 认为下一个时代值得探索的方向之一是:如何让初学者能快速接入优秀的开源项目。
当下大部分开源项目对初学者来讲都不算太友好:不是代码多就是算法难,又或者是层次高。也正是因为“多”、“难”和“复杂”才突显了对优秀架构思想的需求。但是优秀的架构思想不仅仅是为“多”、“难”和“复杂”服务的,好思想对简单项目也适用。Sugar 在 github 贡献融入优秀思想的简单项目,目的是:让小白先长“老鸟”的心,减少积累“量变”的时间,推进“质变”速度。
对于 Sugar 的在线一对一付费辅导,详情见公众号“关于我”页面。这里 Sugar 补充几点:
1、每个付费学员最多提供累积 6 小时的入门辅导(目前大部分是选 3 个 2 小时这样的搭配)。
2、再次强调有关推文内容的问题推荐在 github 上写 issue,开放平台更容易获得答案。
3、微信加好友问问题的,请多打几个字说清楚问题(只甩 Sugar 一个截图啥也不说,Sugar 一脸蒙圈回答不了)。
Sugar 鼓励大家要有探索精神,自主学习提高。
关注作者
欢迎扫码关注我的公众号MultiMCU EDU
。
提示:在公众号“关于我”页面可加作者微信好友。
喜欢本文求点赞,有打赏我会更有动力。
stm32 usb 虚拟串口 相同_RTThread STM32 虚拟串口代码级移植相关推荐
- STM32 USB相关知识扫盲
STM32 USB相关知识扫盲 目录 STM32 USB相关知识扫盲 1.基础知识 2.电气属性 2.1 数据线 2.2 USB主机是如何识别设备是高速设备/全速设备/低速设备? 3.USB设备分类 ...
- STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯
文章目录 目的 基础说明 使用STM32CubeIDE配置生成代码 用户代码分析 回环测试 串口参数设置 USB HS使用与演示 通讯速率测试 测试代码 USB FS测试 USB HS测试 影响速度的 ...
- STM32 USB虚拟串口收发任意长度字节例程
STM32 USB虚拟串口收发任意长度字节例程 创建STM32 CubeMX工程 代码修改 收发任意长度测试 创建STM32 CubeMX工程 基于STM32 CubeMX进行开发,使用USB的高速模 ...
- STM32 USB CDC 虚拟多串口
转自: http://www.stmcu.org.cn/module/forum/thread-613510-1-1.html 楼主 发表于 2017-9-28 22:30:04 | 只看该作者 | ...
- [原创] STM32 USB CDC 虚拟多串口
creep 该用户从未签到 61 主题 1995 帖子 26 蝴蝶豆 版主 最后登录 2018-10-19 发消息 电梯直达 楼主 发表于 2017-9-28 22:30:04 | 只看该作 ...
- stm32 USB HID+CDC 鼠标键盘串口 组合设备配置解析
前言 查阅网上的博客与代码,很多都是关于USB的鼠标配置.USB的键盘配置.USB的虚拟串口配置,稍微深入一点的会将鼠标键盘合在一起,但移植起来就会报很多错误,要么是检测不到,要么是警告,这很正常,因 ...
- STM32Cube MX USB双设备MSC+CDC 实现虚拟U盘+虚拟串口
前言 在上一篇文章实现USB虚拟U盘之后,项目需要用同一个USB口同时实现MSC和CDC功能,既能进行串口通信又能读取片外FLASH虚拟U盘.对于USB通用串行总线如果要真正搞明白这个协议还是比较困难 ...
- STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL)
STM32 USB VCOM和HID的区别,配置及Echo功能实现(HAL ) STM32的USB功能模块可以配置为虚拟串口(VCOM: Visual Port Com)或人机交互设备(HID: Hu ...
- ch340串口驱动_如何使用串口来给STM32下载程序
前言 第一次学习STM32的时候,不知道有调试器这个东西,所以一直是通过串口来给STM32下载程序,下载速度也还算可以,一般是几秒钟完成.后来用了调试器,可以直接在Keil环境下进行下载,而且还可以进 ...
最新文章
- javascript读取XML文档
- C语言网络编程:socket函数
- 人工智能:技术本无罪,善恶在人心
- 【心灵鸡汤】高情商者的15个表现
- java实现ftp文件的上传与下载
- 基于numpy的多项式拟合预测人口数值
- gRPC官方快速上手学习笔记(c#版)
- Kali渗透测试——netdiscover
- 邮件服务器最常见的安全问题及解决办法
- 强化学习三、策略迭代与值迭代
- 2022年3月搜索引擎市场份额排行榜
- windows桌面待办事项_苹果iPhone手机上有什么好用的管理待办事项的桌面便签软件吗?...
- 64位系统编译32位程序报错
- java编写爬虫_手把手教你从零开始用Java写爬虫
- 写作论文文献导入方法
- Contrastive Learning Rivals Masked Image Modeling in Fine-tuning via Feature Distillation
- Vue-报错cb() never called!
- 如何应对不间断电源(UPS)设计挑战
- 如果暴力不是为了杀戮,那就毫无意义
- VSM模型与TF-IDF权重