Arduino stm32 USB CDC虚拟串口使用示例

Arduino stm32 USB CDC虚拟串口使用示例


  • 📍相关篇《STM32F401RCT6基于Arduino框架点灯程序》
  • 🔖本开发环境基于VSCode + PIO
  • 🌿验证芯片:STM32F401RC
  • ⌛USB CDC引脚: PA11、 PA12
  • 🔧platformio.ini配置信息:
[env:genericSTM32F401RC]
platform = ststm32
board = genericSTM32F401RC
framework = arduino
build_flags = -D USBCON -D USBD_USE_CDC;           -D USE_USB_HS
upload_protocol = stlink
;upload_protocol = serial
;upload_protocol = jlink
;upload_protocol = cmsis-dap
  • 🧨 STM32 USB CDC虚拟串口在Arduino IDE中好像可以在功能菜单上选择,由于IDE环境支持包没有安装,没有进一步验证。 ✨个人还是推荐VSCode + PIO 方式来开发,比较灵活和便捷。✨

🔨Arduino IDE 环境下配置USB CDC虚拟串口方法

  • 🔖这里以Arduino IDE 2.2.1版本设置为例,进行USB CDC虚拟串口配置:
    在这里插入图片描述

📗USBSerial API相关函数

  • 🔖 基本功能函数和硬件串口相关功能函数是一样。
    void begin(void);void begin(uint32_t);void begin(uint32_t, uint8_t);void end(void);virtual int available(void);virtual int availableForWrite(void);virtual int peek(void);virtual int read(void);virtual size_t readBytes(char *buffer, size_t length);  // read chars from stream into buffervirtual size_t readBytesUntil(char terminator, char *buffer, size_t length);  // as readBytes with terminator charactervirtual void flush(void);virtual size_t write(uint8_t);virtual size_t write(const uint8_t *buffer, size_t size);
  • ✨ 为什么是使用Serial,因为在WSerial.h文件中有如下定义:
#if defined (USBCON) && defined(USBD_USE_CDC)#ifndef DISABLE_GENERIC_SERIALUSB#define ENABLE_SERIALUSB#if !defined(Serial)#define Serial SerialUSB#define serialEvent serialEventUSB#endif#endif#if defined(ENABLE_SERIALUSB)#define HAVE_SERIALUSB#endif

📝示例代码

#include <Arduino.h>
//#include <HardwareSerial.h>
#include <USBSerial.h>
//HardwareSerial Serial2(USART2); // 创建一个Serial2对象
//Arduino IDE环境下需要启用下面2个宏
// #define USBCON  1
// #define USBD_USE_CDC 1//----------
// #define USB_CDC_HID 1// put function declarations here:
int myFunction(int, int);#define led1 PC13
#define led2 PA_5uint32_t TimerUART;//HardwareSerial Serial1(PA10, PA9);//RX,TX将Serialx(x=1-4)串口x的管脚指定到PA10,PA9引脚上//USBSerial SerialCDC; // 创建一个USBSerial对象
//  the setup function runs once when you press reset or power the board
void setup()
{// Serial1.begin(115200);  // 初始化串口1作为调试串口// Serial.begin(115200); // Serial = Serial2初始化串口2作为调试信息输出// Serial.begin(115200);Serial.begin();// initialize digital pin LED_BUILTIN as an output.// Serial1.setRx(PA10); // using pin name PY_n// Serial1.setTx(PA9); // using pin number PYn// Serial.begin(115200);pinMode(led1, OUTPUT);pinMode(led2, OUTPUT);// pinMode(LED_BUILTIN, OUTPUT);TimerUART = HAL_GetTick();
}// the loop function runs over and over again forever
void loop()
{if ((HAL_GetTick() - TimerUART) > 1000){digitalToggle(led1);digitalToggle(led2);Serial.println("USART2(PA2 PA3)Arduino STM32F401RC \n");// delay(500); // wait for a secondSerial.printf("USART1(PA9 PA10)STM32F401 SysClockFreq:%d \r\n", HAL_RCC_GetSysClockFreq());Serial.print("from SerialUSB data\n");TimerUART = HAL_GetTick();}
}// put function definitions here:
int myFunction(int x, int y)
{return x + y;
}
  • 🌿输出效果:
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226665.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于YOLOv8的遥感SAR舰船小目标识别

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的遥感SAR舰船小目标&#xff0c;阐述了整个数据制作和训练可视化过程 1.YOLOv8介绍 Ultralytics YOLOv8是Ultralytics公司开发的YOLO目标检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的…

最新AI绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.

1、首先进入阿里云maven仓库&#xff0c;在搜索栏输入无法下载的依赖名称&#xff0c;查询现有版本号&#xff0c;可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库&#xff1a; maven { url https://www.jitpack.io } maven { u…

3D游戏角色建模纹理贴图处理

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中&#xff0c;我们将介绍 3D 纹理的基础知识&#xff0c;并讨…

算法设计与分析实验报告-贪心算法

校课程的简单实验报告。 算法设计与分析实验报告-递归与分治策略 算法设计与分析实验报告-动态规划算法 算法设计与分析实验报告-贪心算法 dijkstra迪杰斯特拉算法&#xff08;邻接表法&#xff09; 算法设计与分析实验报告-回溯法 算法设计与分析实验报告-分支限界法 …

Spring高手之路-@Autowired和@Resource注解异同点

目录 相同点 不同点 1.来源不同。 2.包含的属性不同 3.匹配方式&#xff08;装配顺序&#xff09;不同。 ​编辑 4.支持的注入对象类型不同 5.应用地方不同 相同点 都可以实现依赖注入&#xff0c;通过注解将需要的Bean自动注入到目标类中。都可以用于注入任意类型的Bean…

什么是uniapp?用uniapp开发好不好用?

随着移动应用市场的持续发展&#xff0c;开发者们面临着不断增长的需求和多样化的平台选择。在这个背景下&#xff0c;UniApp 应运而生&#xff0c;成为一种跨平台开发框架&#xff0c;为开发者提供了一种高效、简便的方式来开发移动应用程序。利用 UniApp 开发应用程序可以节省…

实战10 角色管理

目录 1、角色后端接口 2、角色列表查询 2.1 效果图 2.2页面原型代码 2.3 角色api代码 role.js 2.4 查询角色列表代码 4、 新增和编辑角色 5、删除角色 6、分配权限 6.1 分配权限思路 6.2 分配权限回显接口 6.3 分配权限回显前端实现 6.4分配权限后端接口 6.4.1 R…

Ubuntu 22.04.3 Server 设置静态IP 通过修改yaml配置文件方法

目录 1.查看网卡信息 2.修改yaml配置文件 3.应用新的网络配置 4.重新启动网络服务 文章内容 本文介绍Ubuntu 22.04.3 Server系统通过修改yaml配置文件配置静态 ip 的方法。 1.查看网卡信息 使用ifconfig命令查看网卡信息获取网卡名称​ 如果出现Command ifconfig not fo…

Solana生态全方位解析科普和钱包(bitget钱包)

如果你对它感兴趣&#xff0c;或者想探索一个具有巨大潜力的公链或者生态&#xff0c;那么Solana绝对值得你关注。在这篇文章中&#xff0c;我们将带你全方位了解Solana&#xff0c;并为你推荐一款绝佳的Solana钱包&#xff01; 什么是 Solana (SOL)&#xff1f; Solana (SOL)…

UniApp小程序使用vant引入vant weapp

HBuilder X里新建项目指路 HBuilderX新建项目 安装node.js指路 安装node.js 1.通过npm安装 查看npm环境 //打开终端输入命令查看版本 npm -version 1.1.右键打开外部终端窗口 1.2.输入npm init -y命令 1.3.通过命令安装 npm i vant/weapp1.3.3 -S --production 1.4.打开工具…

SpringBoot+AOP+Redis 防止重复请求提交

本文项目基于以下教程的代码版本&#xff1a; https://javaxbfs.blog.csdn.net/article/details/135224261 代码仓库: springboot一些案例的整合_1: springboot一些案例的整合 1、实现步骤 2.引入依赖 我们需要redis、aop的依赖。 <dependency><groupId>org.spr…

Typora使用PicGo+Gitee上传图片报错403 Forbidden

Typora使用PicGoGitee上传图片报错403 Forbidden Typora使用PicGoGitee上传图片&#xff0c;上传失败了&#xff0c;错误信息如下 打开PicGo的日志文件查看&#xff0c;可以看到错误详情如下 换了一个插件github-plus重新配置&#xff0c;解决了这个问题 再打开日志查看&…

扫雷(c语言)

先开一个test.c文件用来游戏的逻辑测试&#xff0c;在分别开一个game.c文件和game.h头文件用来实现游戏的逻辑 主要步骤&#xff1a; 游戏规则&#xff1a; 输入1&#xff08;0&#xff09;开始&#xff08;结束&#xff09;游戏&#xff0c;输入一个坐标&#xff0c;如果该坐…

【网络安全 | CTF】FlatScience

该题考察SQL注入 正文 后台扫到robots.txt 页面内容如下&#xff1a; 进入login.php 页面源代码如图&#xff1a; 传参debug得到php代码&#xff1a; <?php if(isset($_POST[usr]) && isset($_POST[pw])){$user $_POST[usr];$pass $_POST[pw];$db new SQLite3…

CEC2017(Python):五种算法(HHO、RFO、OOA、PSO、GWO)求解CEC2017

一、5种算法简介 1、哈里斯鹰优化算法HHO 2、红狐优化算法RFO 3、鱼鹰优化算法OOA 4、粒子群优化算法PSO 5、灰狼优化算法GWO 二、CEC2017简介 参考文献&#xff1a; [1]Awad, N. H., Ali, M. Z., Liang, J. J., Qu, B. Y., & Suganthan, P. N. (2016). “Problem d…

MySQL运维实战(1.2)安装部署:使用二进制安装部署

作者&#xff1a;俊达 引言 上一篇我们使用了RPM进行安装部署&#xff0c;这是一种安装快速、简化部署和管理过程、与操作系统提供的包管理工具紧密集成的部署方法。此外&#xff0c;当你需要更高的灵活性和自定义性&#xff0c;并且愿意承担一些额外的手动配置和管理工作&am…

计算机网络——应用层与网络安全(六)

前言&#xff1a; 前几章我们已经对TCP/IP协议的下四层已经有了一个简单的认识与了解&#xff0c;下面让我们对它的最顶层&#xff0c;应用层进行一个简单的学习与认识&#xff0c;由于计算机网络多样的连接形式、不均匀的终端分布&#xff0c;以及网络的开放性和互联性等特征&…

MR实战:统计总分与平均分

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建成绩映射器类5、创建成绩驱动器类6、启…

ubuntu虚拟机终端(terminal)打不开

问题描述 ubuntu&#xff08;16.04 LTS 64位&#xff09;虚拟机终端&#xff08;terminal&#xff09;打不开 问题原因 我是ctrlaltF5&#xff09;进入命令行模式&#xff0c;也就是无图形界面&#xff0c;这时候会让你输入用户名和密码: 运行命令: gnome-terminal 会看到有…