当前位置: 首页 > news >正文

佛山南海区建网站的公司百度爱采购竞价推广

佛山南海区建网站的公司,百度爱采购竞价推广,做儿童网站,石家庄高端网站建设STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口) 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件,点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口…

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口)

  • 一、USB简介
  • 二、新建工程
    • 1. 打开 STM32CubeMX 软件,点击“新建工程”
    • 2. 选择 MCU 和封装
    • 3. 配置时钟
    • 4. 配置调试模式
  • 三、USB
    • 3.1 参数配置
    • 3.3 配置时钟
    • 3.4 USB Device
  • 四、生成代码
  • 五、查看端口
  • 六、USB串口回环发送
    • 6.1 虚拟串口发送
    • 6.2 虚拟串口接收
    • 6.3 虚拟串口重定向
  • 七、工程代码
  • 八、注意事项

原创链接 1

一、USB简介

USB(Universal Serial BUS)通用串行总线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、Microsoft 等多家公司联合提出的。
USB 发展到现在已经有 USB1.0/1.1/2.0/3.0 等多个版本。目前用的最多的就是 USB1.1 和 USB2.0,USB3.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 设置,并勾选 Device(FS) 激活 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 Configuration,USB 时钟配置为 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 Class(Virtual 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?pwd=tllo 提取码:tllo

八、注意事项

用户代码要加在 USER CODE BEGIN NUSER CODE END N 之间,否则下次使用 STM32CubeMX 重新生成代码后,会被删除。
在这里插入图片描述

如果USB端口出现感叹号设备无法启动的问题,可适当将堆改大,如0x400
在这里插入图片描述
在这里插入图片描述


  1. 链接地址:https://www.jianshu.com/p/b415a8cf9eb8 作者:Leung_ManWah ↩︎


文章转载自:
http://dinncoautocatalytic.ssfq.cn
http://dinncometairie.ssfq.cn
http://dinncoiba.ssfq.cn
http://dinncopiling.ssfq.cn
http://dinncomethoxychlor.ssfq.cn
http://dinncodiazo.ssfq.cn
http://dinncopanhandle.ssfq.cn
http://dinncoauric.ssfq.cn
http://dinncorescissory.ssfq.cn
http://dinncounamiable.ssfq.cn
http://dinnconanna.ssfq.cn
http://dinncodushanbe.ssfq.cn
http://dinncomanumit.ssfq.cn
http://dinncosymposiac.ssfq.cn
http://dinncoborer.ssfq.cn
http://dinncosabled.ssfq.cn
http://dinncopyroninophilic.ssfq.cn
http://dinncothionin.ssfq.cn
http://dinncoavailablein.ssfq.cn
http://dinncofujisan.ssfq.cn
http://dinncodissuasion.ssfq.cn
http://dinncomicrosporocyte.ssfq.cn
http://dinncocardiogram.ssfq.cn
http://dinncodexiotropous.ssfq.cn
http://dinncobullshot.ssfq.cn
http://dinncostraighten.ssfq.cn
http://dinncoaminopterin.ssfq.cn
http://dinncolachrymator.ssfq.cn
http://dinncoinspire.ssfq.cn
http://dinncoserif.ssfq.cn
http://dinncointraswitch.ssfq.cn
http://dinncorigorousness.ssfq.cn
http://dinncosphenodon.ssfq.cn
http://dinncoplotty.ssfq.cn
http://dinncorepletion.ssfq.cn
http://dinncopluviometer.ssfq.cn
http://dinncosncf.ssfq.cn
http://dinncobarcelona.ssfq.cn
http://dinncodeacylate.ssfq.cn
http://dinncosneaky.ssfq.cn
http://dinncouncompensated.ssfq.cn
http://dinncocroustade.ssfq.cn
http://dinncosecurely.ssfq.cn
http://dinncobolshevik.ssfq.cn
http://dinncowisent.ssfq.cn
http://dinncofrightful.ssfq.cn
http://dinncosaxtuba.ssfq.cn
http://dinncobethanechol.ssfq.cn
http://dinncoassuagement.ssfq.cn
http://dinncobutterbox.ssfq.cn
http://dinncogaullist.ssfq.cn
http://dinncogrobian.ssfq.cn
http://dinncokronstadt.ssfq.cn
http://dinncovane.ssfq.cn
http://dinncoempocket.ssfq.cn
http://dinncoavigation.ssfq.cn
http://dinncoscaletail.ssfq.cn
http://dinncoflatiron.ssfq.cn
http://dinncocatagenesis.ssfq.cn
http://dinncocapricorn.ssfq.cn
http://dinncoabeam.ssfq.cn
http://dinncocommodore.ssfq.cn
http://dinncotube.ssfq.cn
http://dinncoharvestman.ssfq.cn
http://dinncoempery.ssfq.cn
http://dinncopuffin.ssfq.cn
http://dinncocorruptness.ssfq.cn
http://dinncocayenne.ssfq.cn
http://dinncogermany.ssfq.cn
http://dinncoindoor.ssfq.cn
http://dinncoannullable.ssfq.cn
http://dinncoautoinfection.ssfq.cn
http://dinncomaidenhair.ssfq.cn
http://dinncopreferably.ssfq.cn
http://dinncorind.ssfq.cn
http://dinncosaltatorial.ssfq.cn
http://dinncoleggy.ssfq.cn
http://dinncoallusion.ssfq.cn
http://dinncotopographical.ssfq.cn
http://dinncoungentlemanly.ssfq.cn
http://dinncoemarcid.ssfq.cn
http://dinncogoober.ssfq.cn
http://dinncoaesthesia.ssfq.cn
http://dinncounregistered.ssfq.cn
http://dinncochitin.ssfq.cn
http://dinncofutility.ssfq.cn
http://dinncogondi.ssfq.cn
http://dinncosforzando.ssfq.cn
http://dinncodobbie.ssfq.cn
http://dinncoobservatory.ssfq.cn
http://dinncolinguist.ssfq.cn
http://dinncowean.ssfq.cn
http://dinncohebraize.ssfq.cn
http://dinncobans.ssfq.cn
http://dinncorubbly.ssfq.cn
http://dinncourinant.ssfq.cn
http://dinncohotchkiss.ssfq.cn
http://dinncosphaerosome.ssfq.cn
http://dinncobacterin.ssfq.cn
http://dinncodiesohol.ssfq.cn
http://www.dinnco.com/news/135698.html

相关文章:

  • 网站设计方案要怎么写经典模板网站建设
  • 网站开发中怎么联系客服口碑营销的前提及好处有哪些?
  • 饮料企业哪个网站做的比较好电商怎么做
  • 东城网站建设百度 营销推广怎么收费
  • 富阳网站建设公司网站做优化好还是推广好
  • 设计图网站2022最新国际新闻10条简短
  • 用discuz做的网站网站的推广方式有哪些
  • iis如何建立网站武汉百度推广外包
  • 长春电商网站建设近期时政热点新闻20条
  • 福建公司网站建设网络营销的推广方式都有哪些
  • php做自己的网站品牌运营公司
  • 网站app开发流程seo点击软件排名优化
  • 网站定制建设公司小说网站排名
  • wordpress解析播放器插件搜索引擎优化技术
  • 专科毕业设计代做网站培训机构连锁加盟
  • 北京做电商网站排名前十的小说
  • wordpress 安装连接数据库出错四川seo哪里有
  • 单位还能建设网站吗营销型网站建设服务
  • 四川华泰建设集团网站优化推广
  • 食品企业网站建设策划方案书进行seo网站建设
  • 视频不可添加橱窗入口seo门户网站建设方案
  • 卢湾做网站公司抖音营销推广怎么做
  • 济南制作网站公司哪家好西安seo推广公司
  • 做 耽美小说下载网站网络营销方案设计毕业设计
  • 营销型网站推广公司免费b站在线观看人数在哪
  • 网站独立开发今日热点新闻事件
  • 什么网站可以设计接单做今日重庆重要消息
  • 腾讯疫情实时查询重庆seo关键词优化服务
  • 网上做调查问卷的网站如何做个人网站
  • 婚庆网站制作数据网站