教育教学成果展示网站建设凡科网站建设网页怎么建

web/2025/9/29 19:10:51/文章来源:
教育教学成果展示网站建设,凡科网站建设网页怎么建,杭州营销策划公司排名,即将发布的新品手机STM32CubeMX学习笔记-USB接口使用#xff08;CDC虚拟串口#xff09; 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件#xff0c;点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口… STM32CubeMX学习笔记-USB接口使用CDC虚拟串口 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口六、USB串口回环发送6.1 虚拟串口发送6.2 虚拟串口接收6.3 虚拟串口重定向 七、工程代码八、注意事项 原创链接 1 一、USB简介 USBUniversal Serial BUS通用串行总线是一个外部总线标准用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。 USB 发展到现在已经有 USB1.0/1.1/2.0/3.0 等多个版本。目前用的最多的就是 USB1.1 和 USB2.0USB3.0 目前已经开始普及。STM32F103 自带的 USB 符合 USB2.0 规范不过 STM32F103 的 USB 都只能用来做设备而不能用作主机。 标准 USB 共四根线组成,除 VCC/GND 外,另外为 D,D-; 这两根数据线采用的是差分电压的方式进行数据传输的。在 USB 主机上D-和 D都是接了 15K 的电阻到低的所以在没有设备接入的时候D、D-均是低电平。而在 USB 设备中如果是高速设备则会在 D上接一个 1.5K 的电阻到 VCC*而如果是低速设备则会在 D-上接一个 1.5K 的电阻到 VCC。*这样当设备接入主机的时候主机就可以判断是否有设备接入并能判断设备是高速设备还是低速设备。 STM32F103 的 MCU 自带 USB 从控制器符合 USB 规范的通信连接PC 主机和微控制器之间的数据传输是通过共享一专用的数据缓冲区来完成的该数据缓冲区能被 USB 外设直接访问。这块专用数据缓冲区的大小由所使用的端点数目和每个端点最大的数据分组大小所决定每个端点最大可使用 512 字节缓冲区专用的 512 字节和 CAN 共用最多可用于 16 个单向或 8 个双向端点。USB 模块同 PC 主机通信根据 USB 规范实现令牌分组的检测数据发送/接收的处理和握手分组的处理。整个传输的格式由硬件完成其中包括 CRC 的生成和校验。 二、新建工程 1. 打开 STM32CubeMX 软件点击“新建工程” 2. 选择 MCU 和封装 3. 配置时钟 RCC 设置选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器) 选择 Clock Configuration配置系统时钟 SYSCLK 为 72MHz 修改 HCLK 的值为 72 后输入回车软件会自动修改所有配置 4. 配置调试模式 非常重要的一步否则会造成第一次烧录程序后续无法识别调试器 SYS 设置选择 Debug 为 Serial Wire 三、USB 3.1 参数配置 在 Connectivity 中选择 USB 设置并勾选 DeviceFS 激活 USB 设备。 在 Parameter Settings 进行具体参数配置。 Speed Full Speed 12MBit/s固定为全速 Low Power 默认 Disabled在任何不需要使用usb模块的时候通过写控制寄存器总可以使usb模块置于低功耗模式low power mode suspend模式。在这种模式下不产生任何静态电流消耗同时usb时钟也会减慢或停止。通过对usb线上数据传输的检测可以在低功耗模式下唤醒usb模块。也可以将一特定的中断输入源直接连接到唤醒引脚上以使系统能立即恢复正常的时钟系统并支持直接启动或停止时钟系统。 3.2 引脚配置 USB 的 DP 引脚必须上拉 1.5K 欧的电阻电脑才能检测到 USB否则检测不到。 查看野火指南者开发板原理图可知需要将 PD6 配置为低电平使能 USB。 在右边图中找到 PD6 引脚选择 GPIO_Output。 在GPIO output level 中选择 Low 输出低电平。 3.3 配置时钟 选择 Clock ConfigurationUSB 时钟配置为 48MHz且来源最好是外部晶振分频得到。 3.4 USB Device USB有主机Host和设备Device之分。一般电脑的USB接口为主机接口而键盘、鼠标、U盘等则为设备。 部分型号的STM32芯片有1~2个USB接口。像STM32F103系列的有一个USB Device接口STM32F407系列的有2个USB接口既可以作为HOST又可以作为Device还可以作为OTG接口。 在 Middleware 中选择 USB_DEVICE 设置在 Class For FS IP 设备类别选择 Communication Device ClassVirtual Port Com 虚拟串口。 参数配置保持默认。 设备描述符保持默认。 四、生成代码 输入项目名和项目路径 选择应用的 IDE 开发环境 MDK-ARM V5 每个外设生成独立的 ’.c/.h’ 文件 不勾所有初始化代码都生成在 main.c 勾选初始化代码生成在对应的外设文件。 如 GPIO 初始化代码生成在 gpio.c 中。 点击 GENERATE CODE 生成代码 五、查看端口 烧录默认代码连上电脑可在电脑上看到对用的串口 Win10系统下不需要装任何驱动就能使用USB虚拟串口但更低版本的系统比如Win7/8则必须要安装ST官方提供的VCP驱动https://www.st.com/en/development-tools/stsw-stm32102.html 六、USB串口回环发送 6.1 虚拟串口发送 添加头文件 #include “usbd_cdc_if.h”。 在 main() 的死循环中添加 CDC_Transmit_FS() 函数。 #include usbd_cdc_if.h/*** brief The application entry point.* retval int*/ int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USB_DEVICE_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){CDC_Transmit_FS(hello, 5);HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }查看打印 6.2 虚拟串口接收 打开 usbd_dcd_if.c 文件 找到 CDC_Receive_FS()函数这个函数如果USB虚拟串口数据收到就会被调用我们在这个函数中将收到的数据在发回去只需要添加 CDC_Transmit_FS(Buf, *Len); 这一句即可。 使用串口调试助手给它发数据 6.3 虚拟串口重定向 打开 usbd_dcd_if.c 文件 添加以下代码 /* USER CODE BEGIN INCLUDE */ #include stdarg.h /* USER CODE END INCLUDE */ ------------------------------------------------------- /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */void usb_printf(const char *format, ...) {va_list args;uint32_t length;va_start(args, format);length vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args);va_end(args);CDC_Transmit_FS(UserTxBufferFS, length); }/* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */在 main() 的死循环中添加 usb_printf() 函数。 /*** brief The application entry point.* retval int*/ int main(void) {/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USB_DEVICE_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){usb_printf(\r\n****** USB-CDC Example ******\r\n\r\n);HAL_Delay(1000);/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */ }查看打印 七、工程代码 链接https://pan.baidu.com/s/1cvjfMMvoDGj9Zy__BCuiEg?pwdtllo 提取码tllo 八、注意事项 用户代码要加在 USER CODE BEGIN N 和 USER CODE END N 之间否则下次使用 STM32CubeMX 重新生成代码后会被删除。 如果USB端口出现感叹号设备无法启动的问题可适当将堆改大如0x400 链接地址https://www.jianshu.com/p/b415a8cf9eb8 作者Leung_ManWah ↩︎

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

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

相关文章

网页布局照着别的网站做会侵权吗网站建设一个月多少钱

前言 因为自己写的demo需要历史天气的统计数据,但是国内很难找到免费的api接口,很多都需要付费和审核。而国外的网站虽然免费但需要提前知道观测站,城市id等信息。所以就有了这么一篇文章的诞生。 准备工作 库 作用superagent发送请求supera…

电话销售做网站推销做湘菜的网站

本文介绍了如何利用 STM32 微控制器读取和解析 NTC(Negative Temperature Coefficient)热敏电阻的数值。首先,我们将简要介绍 NTC 热敏电阻的原理和特性。接下来,我们将详细讨论如何设计电路连接和采用合适的 STM32 外设进行数值读…

想要找个网站做环评公示怎么用视频做网站首页

目录 一、rest api 1. 新建索引 2. 删除索引 3. 插入单条数据 4. 更新单条数据 5. 删除单条数据 6. 查询数据 二、python elasticsearch库 1. 新建索引 一、rest api 1. 新建索引 请求方式:PUT 请求URL:http://ip/(your_index_nam…

好看的免费的小说网站模板寿阳网站建设

实验17 配置无线网络实验 1.实验拓扑图 Table PC0 和 Table PC1 最开始可能还会连Access Point0,无影响后面会改 名称接口IP地址网关地址Router0fa0/0210.10.10.1fa0/1220.10.10.2Tablet PC0210.10.10.11Tablet PC1210.10.10.12Wireless互联网220.10.10.2LAN192.16…

企业级网站开发与部署wordpress网站静态化

前言 关于axios全局loading的封装博主已经发过一次了,这次是在其基础上增加了token的无感刷新。 token无感刷新流程 首次登录的时候会获取到两个token(AccessToken,RefreshToken)持久化保存起来(localStorage方案&a…

网站代运营公司有哪些哪些官网用wordpress

目录 单例模式(Singleton Pattern) 优缺点 使用场景 饿汉式和懒汉式单例模式 单例模式(Singleton Pattern) 单例模式(Singleton Pattern)是一个类只允许创建一个对象(或者实例&#xff…

免费自创网站做网站能赚钱

IDEA中连接SQLserver数据库(DataGrip相同连接) 1. 打开IDEA-database组件 2. 新建SQL server连接 3. 填写信息进行连接 填写连接名称,连接主机IP,端口,默认端口1433,数据库用户名密码,默认数据库用户名是sa 第一次连接…

在哪里找手机网站建设公司做什么网站赚钱最快

我们在JSTL标签中看到“JSP”这种类型的定义,但是不知道它是什么意思,其实它的意思就是定义了一个JSTL标签内部是否允许使用JSP表达式,先来了解什么是JSTL标签体,请看代码://中间即为JSTL标签体再来看看什么是jsp表达式…

专业的家居行业网站制作泉州哪家网站建设公司好

xhtml css页面制作过程中问题的解决方案,说是解决方案应该有点过了,充其量只不过是给刚刚开始学标准页面制作的朋友们的一些小建议,如 2018-04-14XHTML里面的img标记应该这样写:,这种写法也就是所谓的自关闭&#xff0…

珠海微信网站宝钢建设工程有限公司网站

为了提供一致的编辑体验,您需要一致的数据和可预测的行为。不幸的是,DOM缺乏这两个特性。现代编辑器的解决方案是维护自己的文档模型来表示它们的内容。对于Quill来说,Parchment就是这样的解决方案。它在自己的代码库中组织,并拥有…

工商局官网入口网站优化18600119496

1588: [HNOI2002]营业额统计 Time Limit: 5 SecMemory Limit: 162 MBDescription 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以…

网站推广排名WordPress能做门户网吗

本篇文章主要介绍了关于address标签用法。或许有些朋友对于address标签有点陌生,也会产生address是什么意思的疑问,毕竟在我们日常建站过程中,很少会用到这个标签。但是俗话说,存在即合理。html里每一个标签都有他自己的定义和用处…

宝山网站建设哪家好时尚网站

netcat(nc)下载及基本使用 - 知乎

织梦教育网站模板甜品店网站开发背景

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

丹徒网站建设平台分销商城平台

一、Cookie的出现浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现。针对上述的问题,网景公司的程序员创造了Cookie。…

个人网站可以放广告吗上传图片的网站要怎么做

忍着疼痛奔跑,带着泪光微笑转瞬,毕业已近四年,回顾,还在路上。头几年,有着一颗爱玩的心,秉着“人这一辈子不能对不起自己”的谬论,一直随着自己的性子,想做什么就做什么,…

学校网站设计流程公司门户网站建设公司

Spring 就是⼀个包含了众多工具方法的 IoC 容器。既然是容器那么它就具备两个最基本的功能: 将对象存储到容器(Spring)中从容器中将对象取出来 接下来使用 Maven 方式来创建一个 Spring 项目,创建 Spring 项目和 Servlet 类似&a…

怎么看一个网站是html5百度seo关键词排名s

Day3 链表 链表也是一种很重要的数据结构,链表的优势是空间不必连续,分配比较自由,缺点是不支持随机访问,想要获取链表中间的某个元素,必须要从头遍历。 LeetCode 203.移除链表元素【虚拟头结点】 移除链表中的某个…

建设网站设计的公司网站返回500错误

这里的笔记是关于蓝桥杯关键知识点的记录,有别于基础语法,很多内容只要求会用就行,无需深入掌握。 文章目录 前言一、编程基础1.1 C基础格式和版本选择1.2 输入输出cin和cout: 1.3 string以下是字符串的一些简介:字符串…