娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

stm32 usb和安卓手機的通訊過程

發布者:感恩的7號最新更新時間:2020-03-25 來源: eefocus關鍵字:stm32  usb  安卓手機  通訊過程 手機看文章 掃描二維碼
隨時隨地手機看文章

前段時間公司開發了一個安卓外設,主要是用某寶淘來的demo 在stm32F103的usb功能來和安卓設備的usb來通訊


敘述之前先來一個整體的框圖吧:

在這里插入圖片描述

需要準備的設備有:


①.安卓手機或者安卓pad,(手機必須支持otg功能,否則就得用host功能了)

②.otg轉接線或者轉接頭

③.安卓數據線(一定要是能通訊數據的線纜,有些山寨的這個線只有2根線,沒有數據線)

④.帶有usb功能的單片機(這個usb需要能支持用戶自行定義)


接下來就開始搗鼓stm32單片機程序了,下面是usb功能的代碼

usb功能看了一下主要是借助hid的標準協議上衍生而來的一個usb標準設備


/******************** (C) COPYRIGHT 2010 STMicroelectronics ********************

* File Name          : usb_desc.c

* Author             : MCD Application Team

* Version            : V3.2.1

* Date               : 07/05/2010

* Description        : Descriptors for Mass Storage Device

********************************************************************************

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS

* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.

* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,

* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE

* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING

* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*******************************************************************************/


/* Includes ------------------------------------------------------------------*/

#include "usb_desc.h"

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private variables ---------------------------------------------------------*/

/* Extern variables ----------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/


/* USB Standard Device Descriptor */


const u8 CustomHID_DeviceDescriptor[CUSTOMHID_SIZ_DEVICE_DESC] =

  {

    0x12,                       /*bLength */

    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/

    0x00,0x02,                  /*bcdUSB */

    0x00,                       /*bDeviceClass*/

    0x00,                       /*bDeviceSubClass*/

    0x00,                       /*bDeviceProtocol*/

    0x08,                       /*bMaxPacketSize40*/

    0x71,0x04,                  /*idVendor (0x0471)*/

    0x08,0x24,                  /*idProduct = 0x2408*/

    0x00,0x02,                  /*bcdDevice rel. 2.00*/

    1,                          /*Index of string descriptor describing manufacturer */

    2,                          /*Index of string descriptor describing product*/

    3,                          /*Index of string descriptor describing the device serial number */

    0x01                        /*bNumConfigurations*/

  }

  ; /* CustomHID_DeviceDescriptor */



/* USB Configuration Descriptor */

/*   All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */

const u8 CustomHID_ConfigDescriptor[ENEPOINT_NUM*7+18] =

  {

    0x09, /* bLength: Configuation Descriptor size */

    USB_CONFIGURATION_DESCRIPTOR_TYPE, /* bDescriptorType: Configuration */

    ENEPOINT_NUM*7+18,    /*CUSTOMHID_SIZ_CONFIG_DESC, wTotalLength: Bytes returned */

    0x00,

    0x01,         /* bNumInterfaces: 1 interface */

    0x01,         /* bConfigurationValue: Configuration value */

    0x00,         /* iConfiguration: Index of string descriptor describing

                                 the configuration*/

    0xC0,         /* bmAttributes: Bus powered */

    0x32,         /* MaxPower 100 mA: this current is used for detecting Vbus */


    /************** Descriptor of Custom HID interface ****************/

    /* 09 */

    0x09,         /* bLength: Interface Descriptor size */

    USB_INTERFACE_DESCRIPTOR_TYPE,/* bDescriptorType: Interface descriptor type */

    0x00,         /* bInterfaceNumber: Number of Interface */

    0x00,         /* bAlternateSetting: Alternate setting */

    ENEPOINT_NUM,         /* bNumEndpoints */

    0x00,         /* bInterfaceClass: HID=0X03,其他選0 */

    0x00,         /* bInterfaceSubClass : 1=BOOT, 0=no boot */

    0x00,         /* nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse */

    0,            /* iInterface: Index of string descriptor */

    /********************以下只對HID的描述符  Descriptor of Custom HID HID ********************/

    /* 18 */

  //  0x09,         /* bLength: HID Descriptor size */

  //  HID_DESCRIPTOR_TYPE, /* bDescriptorType: HID */

  //  0x10,         /* bcdHID: HID Class Spec release number */

  //  0x01,

  //  0x00,         /* bCountryCode: Hardware target country */

  //  0x01,         /* bNumDescriptors: Number of HID class descriptors to follow */

  //  0x22,         /* bDescriptorType */

  //  CUSTOMHID_SIZ_REPORT_DESC,/* wItemLength: Total length of Report descriptor */

  //  0x00,

  

  

  /******************** Descriptor of Custom endpoints ******************/

   

    0x07, /* bLength: Endpoint Descriptor size */

    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

/* Endpoint descriptor type */

    0x01, /* bEndpointAddress: */

/* Endpoint Address (OUT) */

    USB_ENDPOINT_TYPE_BULK,/* bmAttributes: Interrupt endpoint */

    0x10,0x00, /* wMaxPacketSize: 32 Bytes max  */

    0x20, /* bInterval: Polling Interval (20 ms) */

    

   /* 27 */  

    0x07,          /* bLength: Endpoint Descriptor size */

    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

    0x81,          /* bEndpointAddress: Endpoint Address (IN) */

  USB_ENDPOINT_TYPE_BULK,          /* bmAttributes: Interrupt endpoint */

    0x10, 0x00,         /* wMaxPacketSize: 32 Bytes max */

    0x20,          /* bInterval: Polling Interval (32 ms) */

    /* 34 */

    

    0x07, /* bLength: Endpoint Descriptor size */

    USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType: */

/* Endpoint descriptor type */

    0x82, /* bEndpointAddress: */

/* Endpoint Address (OUT) */

    USB_ENDPOINT_TYPE_BULK,/* bmAttributes: Interrupt endpoint */

    0x40,0x00, /* wMaxPacketSize: 512 Bytes max  */

    0x20 /* bInterval: Polling Interval (20 ms) */   

  }

  ;


/* USB String Descriptors (optional) */

const u8 CustomHID_StringLangID[CUSTOMHID_SIZ_STRING_LANGID] =

  {

CUSTOMHID_SIZ_STRING_LANGID,

USB_STRING_DESCRIPTOR_TYPE,

0x09,

0x04

  }

  ; /* LangID = 0x0409: U.S. English */


const u8 CustomHID_StringVendor[CUSTOMHID_SIZ_STRING_VENDOR] =

  {

    CUSTOMHID_SIZ_STRING_VENDOR, /* Size of Vendor string */

    USB_STRING_DESCRIPTOR_TYPE,  /* bDescriptorType*/

    /* Manufacturer: "STMicroelectronics" */

'O', 0,

'T', 0,

'G', 0,

  };


const u8 CustomHID_StringProduct[CUSTOMHID_SIZ_STRING_PRODUCT] =

  {

    CUSTOMHID_SIZ_STRING_PRODUCT,          /* bLength */

    USB_STRING_DESCRIPTOR_TYPE,        /* bDescriptorType */

'S', 0,

'T', 0,

'M', 0,

'3', 0,

'2', 0,

'A',0,

'n',0,

'd',0,

'r',0,

'o',0,

'i',0,

'd',0,

' ',0,

'U',0,

'S',0,

'B',0,

' ',0,

'O', 0,

'T', 0,

'G', 0,

  };

u8 CustomHID_StringSerial[CUSTOMHID_SIZ_STRING_SERIAL] =

  {

    CUSTOMHID_SIZ_STRING_SERIAL,           /* bLength */

    USB_STRING_DESCRIPTOR_TYPE,        /* bDescriptorType */

'T', 0,

'a', 0,

'o', 0,

'b', 0,

'a', 0,

'o', 0,

'-', 0,

'B', 0,

'e', 0,

'i', 0,

'j', 0,

'i',0,

'n',0,

'g',0,

'Y',0,

[1] [2]
關鍵字:stm32  usb  安卓手機  通訊過程 引用地址:stm32 usb和安卓手機的通訊過程

上一篇:利用樹莓派打造STM32無線在線調試器!
下一篇:stm32在linux編譯,遠程調試

推薦閱讀最新更新時間:2025-06-23 02:48

STM32 USART與USB接收不定數據方法,標準庫、HAL庫都適用
很多時候,我們使用串口或USB接收數據時,往往不知道PC端會發多長的數據下來, 為了解決這個不定數據接收問題,在此各提供一個解決思路。 串口數據不定接收: 由于STM32單片機帶IDLE中斷,所以利用這個中斷,可以接收不定長字節的數據, 由于STM32屬于ARM單片機,所以這篇文章的方法也適合其他的ARM單片機。 IDLE就是串口收到一幀數據后,發生的中斷。什么是一幀數據呢?比如說給單片機一 次發來1個字節,或者一次發來8個字節,這些一次發來的數據,就稱為一幀數據,也可以 叫做一包數據。 還有一個RXNE中斷,當接收到1個字節,就會產生RXNE中斷,當接收到一幀數據,就 會產生IDLE中斷。比如給單片機一次性發送8個字
[單片機]
<font color='red'>STM32</font> USART與<font color='red'>USB</font>接收不定數據方法,標準庫、HAL庫都適用
意法半導體發布支持STM32 微控制器的 USB Type-C? Power Delivery 軟件
意法半導體發布支持STM32 微控制器的 USB Type-C? Power Delivery 軟件,簡化可持續產品設計 2022 年 12 月 22 日,中國——意法半導體最新的 X-CUBE-TCPP軟件包增強了公司的 USB Type-C? 端口保護芯片產品組合和STM32 接口IP(知識產權),簡化USB Power Delivery產品研發。 USB Power Delivery技術規范支持從傳統的 5V/0.5A一直到最新版本 3.1 規范中的 48V/5A(240 瓦)的工作模式。功率增容可以激發產品設計創新,有助于新的可持續發展法律出臺,例如,最近歐盟批準USB Type-C 成為所有手機、平板電腦和
[單片機]
意法半導體發布支持<font color='red'>STM32</font> 微控制器的 <font color='red'>USB</font> Type-C? Power Delivery 軟件
《精靈寶可夢Go》手游計劃停止支持32位安卓手機
疫情期間,玩《精靈寶可夢 Go》可能有點怪異,因為出行限制會阻止人們下車和游覽,但對于擁有 32 位安卓手機的用戶來說,以后即使放開活動限制也將變得困難。   自2020年8月起,精靈寶可夢 Go 將停止支持 32 位 Android 設備,這意味著較老的智能手機用戶將完全無法訪問其設備上的帳戶。如果你堅持繼續玩自己喜歡的寶可夢游戲,這可能會迫使你升級設備。2015 年或之前發布的大多數安卓設備都將受到此影響。   該更新已發布在官方的 Pokemon Go Live 博客上,其中包含針對特定設備的注釋。 “在 2020 年 8 月開始的 Pokemon GO 更新中,我們將終止對 32 位 Androi
[手機便攜]
stm32之神州三號開發板 USB DFU 實現過程
1.官網下載usb源碼包 2.神舟III號的MCU位f103ze 系列。打開壓縮包,直接找到 Device_Firmware_Upgrade 文件包 MDK打開工程。 3.選擇 stm3210E_EVAL這個選項 ,此時啟動文件為 starup_stm32f10x_hd.s. (1)選擇器件類型為STM32F103ZE;C/C++的Define修改為USE_STDPERIPH_DRIVER, STM32F10X_HD, USE_STM3210E_EVAL; include paths選擇F103相關文件。 (2)工程文件右鍵修改Mange Project ,把不必要的文件刪除,如下。 4.修改 usb 拉高管腳為PG1
[單片機]
<font color='red'>stm32</font>之神州三號開發板 <font color='red'>USB</font> DFU 實現<font color='red'>過程</font>
STM32 USB虛擬串口問題匯總
匯總1:STM32的USB例程修改步驟,來自http://blog.csdn.net/cy757/archive/2010/01/01/5117610.aspx 以下是筆者將ST的Custom_HID例程修改為“自定義USB設備”例程時總結出來的,因為筆者也是剛剛學USB開發不久,某些方面理解錯誤在所難免,請各位大蝦指正。 一、usb_desc.c文件 根據你程序使用的通信方式修改。usb_desc.h文件中定義要根據usb_desc.c文件中的數組的大小;ConfigDescriptor 下添加需要處理的端點;根據需要添加或刪除報告描述符(主要用于HID)和CDC接口描述符(主要用于實現USB轉串口)等。具體方法可以下載個“
[單片機]
基于STM32USB程序開發筆記(四)——USB設備的枚舉(上)
USB設備能否工作,枚舉步驟,用“鄉村愛情”里的話說,“必須的!”,網上也有很多資料,圈圈就提供了一份詳細的枚舉過程,但對STM32是怎么響應的沒有說明,一會詳細道來,先上圈圈的提供的那個枚舉圖示,希望圈圈支持,如果不妥,請與我聯系,謝謝。 我將此轉換成了PDF文件,方便查看。 首先說明一個變量,定義在usb_core.c中: volatile DEVICE_INFO vsDeviceInfo; 看意思就知道他的作用了,DEVICE_INFO是個結構,定義在usb_type.h中: // ********************************************************************
[單片機]
安卓手機廣告囂張 谷歌都看不下去:怒開刀
OEM定制化ROM大行其道的當下,一些促銷廣告開始見縫插針,令人不快。而且不僅手機,強悍如微軟的Windows 10,也會在桌面、鎖屏等刷促銷。 此前,對付手機上無孔不入廣告的方法主要是刷機,今天,谷歌官方動手了。 電子網據外媒報道,在手機版Chrome Canary內部分支的新版中,谷歌上線了自帶的廣告攔截功能。這是谷歌第一次設計原生的廣告屏蔽器,雖然僅出現在內測的Chrome中,但外界均認為這是一個向廣告開刀的信號。 今年4月,谷歌在接受華爾街日報采訪時表示,會從6月開始測試廣告攔截功能,甚至可以殺掉用戶不滿意的“嫡系”通知、彈窗、橫幅等。 稍稍遺憾的是,攔截器面向全體穩定版用戶上線要到2018年了。
[手機便攜]
STM32 基礎系列教程 27 - USB_HID
前言 學習stm32 USB接口使用,學會用CUBE工具快速創建USB設備工程及調試,關于usb的相關知道請讀者提前準備并學習,當然如果不想深究其中原理的話,跟著本文來操作就可以實現基于USB的設備開發了。需要提示的是,stm32在使用usb接口功能是一般需要在DP引腳上上拉一個1.5K電阻到3.3V(部分MCU內部會上拉)。 示例詳解 基于硬件平臺: STM32F10C8T6最小系統板, MCU 的型號是 STM32F103c8t6, 使用stm32cubemx 工具自動產生的配置工程,使用KEIL5編譯代碼。 本示例所用的最小系統板原理圖: 從本節開始,關于CUBEMX工具及KEIL工具的操作將不再細講,如
[單片機]
<font color='red'>STM32</font> 基礎系列教程 27 - <font color='red'>USB</font>_HID
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

隨便看看

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京B2-20211791 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 辽阳市| 宣恩县| 桃园市| 富锦市| 温宿县| 射阳县| 新源县| 白城市| 太白县| 建始县| 余江县| 丰顺县| 弥勒县| 玛沁县| 平泉县| 海兴县| 古浪县| 平利县| 上饶县| 烟台市| 兰考县| 洪湖市| 临桂县| 凯里市| 成都市| 柳州市| 洪泽县| 霍州市| 肃宁县| 竹山县| 永丰县| 卢氏县| 绩溪县| 奉新县| 彰武县| 西充县| 周口市| 温州市| 台安县| 湾仔区| 丹凤县|