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

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

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

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


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

在這里插入圖片描述

需要準(zhǔn)備的設(shè)備有:


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

②.otg轉(zhuǎn)接線或者轉(zhuǎn)接頭

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

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


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

usb功能看了一下主要是借助hid的標(biāo)準(zhǔn)協(xié)議上衍生而來的一個usb標(biāo)準(zhǔn)設(shè)備


/******************** (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]
關(guān)鍵字:stm32  usb  安卓手機  通訊過程 引用地址:stm32 usb和安卓手機的通訊過程

上一篇:利用樹莓派打造STM32無線在線調(diào)試器!
下一篇:stm32在linux編譯,遠(yuǎn)程調(diào)試

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

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

最新單片機文章
隨便看看

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京B2-20211791 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 巴青县| 隆回县| 北辰区| 延长县| 九龙城区| 宜兰县| 延安市| 大竹县| 富锦市| 游戏| 砚山县| 义乌市| 和政县| 百色市| 克山县| 乐平市| 山东| 蒙自县| 加查县| 巴塘县| 兰考县| 合水县| 女性| 舟山市| 黄骅市| 澄迈县| 区。| 佳木斯市| 荥经县| 南川市| 天等县| 昌吉市| 阳春市| 恭城| 苏州市| 砀山县| 会泽县| 营山县| 五寨县| 铜川市| 长岛县|