stm32 USB CDC類虛擬串口初體驗

1. 目標

本文介紹CubeMX生成 USB CDC類虛擬串口工程的操作步驟。

2. 配置流程

  • 時鐘配置

    • usb外設需要48M時鐘輸入
    • stm32405使用外部時鐘源HSE,否則配不出來48M時鐘
    • stm32h750內部有一個48M時鐘
    • stm32f405時鐘配置
      在這里插入圖片描述
    • stm32h750時鐘配置
      在這里插入圖片描述
  • Connectivity ->USB_OTG_FS 和 Connectivity ->USB_OTG_FS 配置

    • stm32 usb內置了一個全速PHY,如果要使用內置PHY則選中 Connectivity ->USB_OTG_FS
    • stm32 usb同時引出一個ULPI接口,可以外接高速PHY,如果要使用外部高速PHY則選中 Connectivity ->USB_OTG_HS
    • PC機作為主機 選擇 Device_Only
    • USB_OTG_FS 和 USB_OTG_HS 可以同時配置
      在這里插入圖片描述
      在這里插入圖片描述
  • Middleware and Software Packs ->USB_DEVICE配置

    • 如圖,選擇cdc設備
      在這里插入圖片描述
  • 配置結束,生成工程。

3. 測試

  • 將代碼下載進板子,插入電腦,即可看見枚舉出兩個com口
    在這里插入圖片描述
  • 用戶接口說明
    usbd_cdc_if.h 和 usbd_cdc_if.c 提供用戶接口
函數說明
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)全速設備,向主機發送內容,通過批量IN端點發送
uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)高速設備,向主機發送內容,通過批量IN端點發送
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)全速設備,接收到主機發送的內容時會調用這個函數,通過批量OUT端點發接收
static int8_t CDC_Receive_HS(uint8_t* Buf, uint32_t *Len)高速設備,接收到主機發送的內容時會調用這個函數,通過批量OUT端點發接收
static int8_t CDC_Control_FS(uint8_t cmd, uint8_t* pbuf, uint16_t length)全速設備,CDC類請求處理函數,控制傳輸,例如:可以設置或讀取線路編碼,包括波特率、停止位、校驗位和數據位
static int8_t CDC_Control_HS(uint8_t cmd, uint8_t* pbuf, uint16_t length)高速設備,CDC類請求處理函數,控制傳輸,例如:可以設置或讀取線路編碼,包括波特率、停止位、校驗位和數據位
  • 回環測試
    在接收函數CDC_Receive_FS中將接收到的數據通過CDC_Transmit_FS發送,代碼如下:
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{/* USER CODE BEGIN 6 */CDC_Transmit_FS(Buf, *Len);USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);USBD_CDC_ReceivePacket(&hUsbDeviceFS);return (USBD_OK);/* USER CODE END 6 */
}

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42120.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42120.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GEE代碼實例教程詳解:植被狀況指數(VCI)與干旱監測

簡介 在本篇博客中,我們將使用Google Earth Engine (GEE) 進行植被狀況指數(Vegetation Condition Index, VCI)的計算和干旱監測。通過MODIS NDVI數據,我們可以評估2001年至2024年間的植被狀況和干旱等級。 背景知識 MODIS NDV…

C++初階:從C過渡到C++的入門基礎

??所屬專欄:C?? ??作者主頁:嶔某?? C發展歷史 C的起源可以追溯到1979年,當時BjarneStroustrup(本賈尼斯特勞斯特盧普,這個翻譯的名字不同的地?可能有差異)在?爾實驗室從事計算機科學和軟件?程的研究?作。?對項?中復…

第4章 Vite模塊化與插件系統(二)

4.3 常用插件介紹 4.3.1 官方插件 vitejs/plugin-vue 用于支持 Vue.js 開發: npm install vitejs/plugin-vue --save-devimport vue from vitejs/plugin-vueexport default defineConfig({plugins: [vue()] })vitejs/plugin-react 用于支持 React 開發&#xf…

JavaDS —— 順序表ArrayList

順序表 順序表是用一段物理地址連續的存儲單元依次存儲數據元素的線性結構,一般情況下采用數組存儲。在數組上完成數據的增刪查改。在物理和邏輯上都是連續的。 模擬實現 下面是我們要自己模擬實現的方法: 首先我們要創建一個順序表,順序表…

關于Mars3d的入門

關于Mars3d的入門 一. 創建地球,加載瓦片圖層二 矢量圖層2.1 常用矢量圖層2.1.1 GraphicLayer2.1.2 GeoJsonLayer 2.2 矢量圖層的點擊事件 三 矢量數據四 事件機制 一. 創建地球,加載瓦片圖層 // 1. 創建地球let map new mars3d.Map("mars3dContai…

基于openStreetMap的路徑規劃ROS功能包

文章目錄 概要OSM是什么主要特點主要組成部分使用場景如何獲取OSM常規參數配置笛卡爾坐標系原點經緯度設置編譯和運行如何規劃演示效果概要 由于https://github.com/MichalDobis/osm_planner存在一些使用問題,不是那么方便,我對其進行了一些修改,便于進行起點到終點進行路徑…

數據如何查詢

分組查詢 分組查詢(Group By)是在關系型數據庫中用來對數據進行分組并對每個組應用聚合函數的一種操作。這種查詢通常結合聚合函數(如 COUNT、SUM、AVG、MAX、MIN 等)使用,用于在查詢結果中生成匯總信息 特點(聚合)&am…

從零開始做題:My_lllp

題目 給出一張png圖片 解題 ┌──(holyeyes?kali2023)-[~/Misc/題目/zulu/My_lllp] └─$ python2 lsb.py extract my_lllp.png out.txt my_lllp [] Image size: 1080x1079 pixels. [] Written extracted data to out.txt. ┌──(holyeyes?kali2023)-[~/Misc/題目/zul…

python的線程池和進程池

Python 3.2 就已經引入了 concurrent.futures 模塊,提供了線程池(ThreadPoolExecutor)和進程池(ProcessPoolExecutor),用于簡化并發編程的管理和調度。 ThreadPoolExecutor 在ThreadPoolExecutor 是 conc…

簡易Qt串口助手

界面顯示如下 關于串口類 初始化 設置串口號 設置波特率 打開串口 發送按鈕功能實現 接收數據顯示在控件中 關閉串口

使用 MFA 保護對企業應用程序的訪問

多因素身份驗證(MFA)是在授予用戶訪問特定資源的權限之前,使用多重身份驗證來驗證用戶身份的過程,僅使用單一因素(傳統上是用戶名和密碼)來保護資源,使它們容易受到破壞,添加其他身份…

springboot非物質文化遺產管理系統-計算機畢業設計源碼16087

目錄 摘要 1 緒論 1.1 選題背景與意義 1.2國內外研究現狀 1.3論文結構與章節安排 2系統分析 2.1 可行性分析 2.2 系統流程分析 2.2.1系統開發流程 2.2.2 用戶登錄流程 2.2.3 系統操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 刪除信息流程 2.3 系統功能…

前端開發過程中經常遇到的問題以及對應解決方法 (持續更新)

我的朋友已經工作了 3 年,他過去一直擔任前端工程師。 不幸的是,他被老板批評了,因為他在工作中犯了一個錯誤,這是一個非常簡單但容易忽視的問題,我想也是很多朋友容易忽視的一個問題。 今天我把它分享出來&#xff…

Linux三劍客(grep、awk和sed)操作及與管道結合使用

1. 總覽 grep、sed和awk被稱為Linux三劍客,是因為它們在文本處理和數據操作方面極其強大且常用。 Linux三劍客在文件處理中的作用: grep(數據查找定位):文本搜索工具,在文件中搜索符合正則表達式的文本內容…

Redis原理-數據結構

Redis原理篇 1、原理篇-Redis數據結構 1.1 Redis數據結構-動態字符串 我們都知道Redis中保存的Key是字符串,value往往是字符串或者字符串的集合。可見字符串是Redis中最常用的一種數據結構。 不過Redis沒有直接使用C語言中的字符串,因為C語言字符串存…

【大模型LLM面試合集】大語言模型架構_attention

1.attention 1.Attention 1.1 講講對Attention的理解? Attention機制是一種在處理時序相關問題的時候常用的技術,主要用于處理序列數據。 核心思想是在處理序列數據時,網絡應該更關注輸入中的重要部分,而忽略不重要的部分&…

BJT的結構(晶體管電壓/電流+β+晶體管特性曲線/截止與飽和+直流負載線(Q點))+單片機數碼管基礎

2024-7-8,星期一,20:23,天氣:晴,心情:晴。今天沒有什么特殊的事情發生,周末休息了兩天,周一回來繼續學習啦,加油加油!!! 今日完成模電…

視頻號矩陣管理系統:短視頻內容營銷的智能助手

隨著短視頻行業的蓬勃發展,視頻號矩陣管理系統應運而生,為內容創作者和品牌提供了一站式的短視頻管理和營銷解決方案。本文將深入探討視頻號矩陣管理系統的核心功能,以及它如何助力用戶在短視頻營銷領域取得成功。 視頻號矩陣管理系統概述 …

在PyTorch中使用TensorBoard

文章目錄 在PyTorch中使用TensorBoard1.安裝2.TensorBoard使用2.1創建SummaryWriter實例2.2利用add_scalar()記錄metrics2.3關閉Writer2.4啟動TensorBoard 3.本地連接服務器使用TensorBoard3.1方法一:使用SSH命令進行本地端口轉發3.2方法二:啟動TensorBo…

Python 全棧體系【三階】(二)

第一章 Django 五、模板 1. 概述 Django中的模板是指可以動態生成任何基于文本格式文件的技術(如HTML、CSS等)。 Django中內置了自己的模板系統,稱為DTL(Django Template Language), Django模板語言。 2. 配置 settings.py中關于模板的…