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

歷史上的今天

今天是:2025年04月23日(星期三)

正在發生

2018年04月23日 | STM32F4 Discovery USB HID 用到的文件圖解

發布者:DazzlingSmile 來源: eefocus關鍵字:STM32F4  Discovery  USB  HID  文件圖解 手機看文章 掃描二維碼
隨時隨地手機看文章

├── STM32_USB_Device_Library                                 USB從設備庫
│   │   ├── Class
│   │   │   └── hid
│   │   │       ├── inc
│   │   │       │   └── usbd_hid_core.h
│   │   │       └── src
│   │   │           └── usbd_hid_core.c
│   │   └── Core
│   │       ├── inc
│   │       │   ├── usbd_core.h
│   │       │   ├── usbd_def.h
│   │       │   ├── usbd_ioreq.h
│   │       │   ├── usbd_req.h
│   │       │   └── usbd_usr.h
│   │       └── src
│   │           ├── usbd_core.c
│   │           ├── usbd_ioreq.c
│   │           └── usbd_req.c
│   ├── STM32_USB_OTG_Driver                                 USB OTG 庫
│   │   ├── inc
│   │   │   ├── usb_bsp.h
│   │   │   ├── usb_core.h
│   │   │   ├── usb_dcd.h
│   │   │   ├── usb_dcd_int.h
│   │   │   ├── usb_defines.h
│   │   │   └── usb_regs.h
│   │   └── src
│   │       ├── usb_core.c
│   │       ├── usb_dcd.c

│   │       └── usb_dcd_int.c


從層級上分析,OTG是更加底層的,USBD的文件依賴于USB的文件,從對庫的使用來講,這些文件我們都不需要改動。

 我們需要改動的有可能是下面的文件

    ├── usb_bsp.c
    ├── usb_conf.h
    ├── usbd_conf.h
    ├── usbd_desc.c
    ├── usbd_desc.h
    └── usbd_usr.c

一些邏輯在main.c中操作,考慮如何發數據到主機端


對于一個工程來講

    ├── stm32f4xx_conf.h
    ├── stm32f4xx_it.c
    ├── stm32f4xx_it.h
    ├── system_stm32f4xx.c

這幾個文件也是從庫里提取出來的,有可能會改動的


STM32F4xx_StdPeriph_Driver 這部分的內容基本上從來沒有動過,是相當底層的驅動文件了


│   ├── CMSIS
│   │   ├── Include
│   │   │   ├── core_cm4.h
│   │   │   ├── core_cm4_simd.h
│   │   │   ├── core_cmFunc.h
│   │   │   └── core_cmInstr.h
│   │   └── ST
│   │       └── STM32F4xx
│   │           ├── Include
│   │           │   ├── stm32f4xx.h
│   │           │   └── system_stm32f4xx.h
│   │           └── Source
│   │               └── Templates
│   │                   └── arm
│   │                       └── startup_stm32f4xx.s

這些文件也是一般不會去動的,.s文件的名字可能有些區別

下面給出一個修改過的main.c 內容很精簡了

/** 

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

  * @file    main.c  

  * @author  MCD Application Team 

  * @version V1.0.0 

  * @date    19-September-2011 

  * @brief   Main program body 

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

  * @attention 

  * 

  * 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. 

  * 

  *

? COPYRIGHT 2011 STMicroelectronics

 

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

  */   

  

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

#include "main.h"  

#include "usbd_hid_core.h"  

#include "usbd_usr.h"  

#include "usbd_desc.h"  

  

/** @addtogroup STM32F4-Discovery_Demo 

  * @{ 

  */  

  

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

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

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

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

#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED  

  #if defined ( __ICCARM__ ) /*!< IAR Compiler */  

    #pragma data_alignment = 4     

  #endif  

#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */  

__ALIGN_BEGIN USB_OTG_CORE_HANDLE  USB_OTG_dev __ALIGN_END;  

__IO uint32_t TimingDelay;  

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

static uint32_t Demo_USBConfig(void);  

static void Demo_Exec(void);  

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

  

/** 

  * @brief  Main program. 

  * @param  None 

  * @retval None 

  */  

int main(void)  

{  

  RCC_ClocksTypeDef RCC_Clocks;  

  /* SysTick end of count event each 10ms */  

  RCC_GetClocksFreq(&RCC_Clocks);  

  SysTick_Config(RCC_Clocks.HCLK_Frequency / 100);  

  Demo_Exec();  

}  

  

/** 

  * @brief  Execute the demo application. 

  * @param  None 

  * @retval None 

  */  

static void Demo_Exec(void)  

{  

      uint8_t buf[4];  

        buf[0]=0;  

        buf[1]=7;  

        buf[2]=7;  

        buf[3]=0;  

    /* USB configuration */  

    Demo_USBConfig();  

    while(1) {  

        Delay(5);  

        USBD_HID_SendReport (&USB_OTG_dev,   

                                                 buf,  

                                                 4);  

    }  

}  

  

/** 

  * @brief  Initializes the USB for the demonstration application. 

  * @param  None 

  * @retval None 

  */  

static uint32_t Demo_USBConfig(void)  

{  

  USBD_Init(&USB_OTG_dev,  

            USB_OTG_FS_CORE_ID,  

            &USR_desc,   

            &USBD_HID_cb,   

            &USR_cb);  

    

  return 0;  

}  

  

/** 

  * @brief  Inserts a delay time. 

  * @param  nTime: specifies the delay time length, in 10 ms. 

  * @retval None 

  */  

void Delay(__IO uint32_t nTime)  

{  

  TimingDelay = nTime;  

  

  while(TimingDelay != 0);  

}  

  

/** 

  * @brief  Decrements the TimingDelay variable. 

  * @param  None 

  * @retval None 

  */  

void TimingDelay_Decrement(void)  

{  

  if (TimingDelay != 0x00)  

  {   

    TimingDelay--;  

  }  

}  

  

/** 

  * @brief  This function handles the test program fail. 

  * @param  None 

  * @retval None 

  */  

void Fail_Handler(void)  

{  

  while(1)  

  {  

    Delay(5);  

  }  

}  

  

#ifdef  USE_FULL_ASSERT  

  

/** 

  * @brief  Reports the name of the source file and the source line number 

  *   where the assert_param error has occurred. 

  * @param  file: pointer to the source file name 

  * @param  line: assert_param error line source number 

  * @retval None 

  */  

void assert_failed(uint8_t* file, uint32_t line)  

{   

  /* User can add his own implementation to report the file name and line number, 

     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  

  

  /* Infinite loop */  

  while (1)  

  {  

  }  

}  

#endif  

  

/** 

  * @} 

  */  

  

  

/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  


關鍵字:STM32F4  Discovery  USB  HID  文件圖解 引用地址:STM32F4 Discovery USB HID 用到的文件圖解

上一篇:STM32 延時函數高級用法分析
下一篇:stm32f4使用Systick實現延時

推薦閱讀

  據路透社報道,陷入困境的移動網絡設備制造商愛立信和諾基亞正重新贏得投資者青睞,因為它們在為期10年的新商業周期增長前開始出現復蘇跡象,而美國向它們的低成本中國競爭對手中興頒布出口禁令,讓它們獲得意外提振。下面就隨手機便攜小編一起來了解一下相關內容吧。  此前,中興在歐洲和美洲搶占了愛立信和諾基亞的市場份額。去年,中興在這些市場...
據上交所披露,上交所公布第二批科創板上市名單中,視覺人工智能企業—虹軟科技位列其中,有望沖刺成為視覺AI領域的第一家上市企業。視覺人工智能市場持續高增長21世紀,隨著互聯網浪潮興起,數據儲量急劇增加,而深度學習算法的出現恰好能夠將數據集歸納出邏輯,實現精準的物體識別和場景識別。GPU 和 AI專用芯片的出現突破了傳統CPU 的算力瓶頸,數據...
IAR Systems集嵌入式系統的設計、開發和測試一體,是當下比較熱門的一款開發工具。本篇以Cortex-M0系列芯片的工程創建為例,將逐步講解新工程的創建跟配置。工程創建打開IDE添加工作空間File→New→Workspace創建新的工程Project→Create New Project工程類型選擇Tool chain - 工具鏈,默認ARMProject templates - 工程模板,有asm、C++、C等模板...
中興旗下今年將推出三系列的驍龍888機型,包括中興AXON 30系列、紅魔6系列、努比亞 Z系列。前兩者均已發布,但努比亞遲遲沒有消息。數碼博主 @禿然熊貓 透露,除 Z 系列外,努比亞還有另一款驍龍888機型,搭載4100mAh 電池,但他沒有透露更多信息。此外,他還放出了一張工信部的證件照,但目前工信部近期公開的機型中僅有一部 ZTE 7530N 未知,且證...

史海拾趣

問答坊 | AI 解惑

點陣屏

一個點陣屏的控制程序 可以參考…

查看全部問答∨

陌生DC-DC升壓 IC求助,懇求各位前輩解難

測試了個拆板1.5轉3.3的DC-DC的板看驅動能力很不錯主芯片不知道是什么.請大家幫幫忙,看是什么型號小弟在此謝謝了 我這個是外掛MOS的,畫出它的電路圖你們幫我看一下是什么IC, 量了一下反饋電壓 FB的電壓為1.06V   輸出驅動單個大功率LED ...…

查看全部問答∨

一臺主機怎么才能控制多臺光端機的球機轉動?

一臺主機怎么才能控制多臺光端機的球機轉動?我試過一臺主機控制一臺光端機的球機能轉動,但是并聯另外一臺光端機 球機都不能轉動了,這是怎么回事?單獨能控制轉動,并聯就不能控制轉動了????請高手指點……………

查看全部問答∨

利用超小型ADC設計低功耗醫療設備方案

目前醫療設備的發展正在徹底變革家庭醫療保健市場,人們無需離開家門就能診斷出各種健康狀況。技術的發展使得便攜式自助護理保健系統成為現實,這些系統可以幫助人們監視諸如血壓、血糖和體溫等重要指標。         家庭醫療 ...…

查看全部問答∨

關于IEC61850規約

我是從事電力行業產品工作的,電力系統現在要搞數字化變電站,要求產品具備IEC61850規約要求的功能,不知有哪位大俠能給提供一些相關的資料(IEC61850的規約我有)。謝謝!…

查看全部問答∨

磁阻傳感器的問題

它是如何將磁場轉換為差動輸出的電壓?…

查看全部問答∨

AVR mega16資料如何獲得

AVR mega16資料如何獲得? 怎么辦?…

查看全部問答∨

用WINDOWS MOBILE 5.0 SDK FOR POCKET PC 開發 2003的程序,大家來討論一下,發言者皆有分!!!

MOBILE 5.0 SDK的庫函數非常豐富,但基于WM5.0 SDK開發的程序沒法在PPC2003上。大家一起討論一下辦法,能讓其在PPC2003上也能用?!…

查看全部問答∨

求助:圖像采集及處理用那個型號DSP好?

打算用DSP做圖像采集處理系統,請問用TI的那個型號的DSP較好啊,我想用TMS320C6000系列,但不知道那個具體型號好些那,麻煩各位幫助解答一下,謝謝!…

查看全部問答∨

論壇兌換板子調試心得+程序+protues仿真(串口)

串口查詢方式:單片機通信最常用的方式,也是與PC機通信最多的方式。 心得:主要熟悉串口寄存器的設置,本人遇到一個問題,通信方式的設置,例如采用11.0592M晶振,UBRR=71,正常模式下,波特率是9600;倍速模式是19200.提醒大家看手冊的時候注意U ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 宁海县| 内黄县| 和田县| 二连浩特市| 勃利县| 桑植县| 钟祥市| 永安市| 临桂县| 清镇市| 桦甸市| 沙田区| 大竹县| 年辖:市辖区| 安新县| 积石山| 绥阳县| 朝阳县| 翁牛特旗| 社会| 龙门县| 连云港市| 邵阳县| 通辽市| 开鲁县| 河南省| 岢岚县| 广元市| 广宗县| 义乌市| 雷波县| 大化| 胶南市| 和田市| 突泉县| 义乌市| 沂水县| 嘉峪关市| 剑川县| 黎城县| 商河县|