STM32f429開發中USB讀寫檔案涉及到的庫移植
第一步
USB_HID移植(原創http://blog.csdn.net/xbl1986/article/details/17577685#comments)
├── 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 內容很精簡了
[cpp] view plain copy
- /**
- ******************************************************************************
- * @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.
- *
- * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2>
- ******************************************************************************
- */
- /* 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.
-
相關推薦
STM32f429開發中USB讀寫檔案涉及到的庫移植
第一步 USB_HID移植(原創http://blog.csdn.net/xbl1986/article/details/17577685#comments) ├── STM32_USB_Device_Library
C#中 XML 讀寫檔案的方法(xmlreader,xmlwriter)
class Test { public static void Main(string[] args) { string path = "d:\\books.xml"; XmlReader read
HDFS讀寫檔案中涉及到的幾個思想
HDFS讀寫檔案中涉及到的幾個思想 1.網路拓撲--節點距離計算 2.機架感知(副本節點選擇) 1.網路拓撲–節點距離計算 1.節點距離:兩個節點到達最近的共同祖先的距離總和。 2.圖解: 2.機架感知(副本節點選擇) 1.官方說明
Python3.5開發3 - 基本命令及如何進行讀寫檔案
Python3.5開發3 - 基本命令及如何進行讀寫檔案 知識點: 熟練使用Python的列表,元組,集合與字典 熟練使用Python讀寫檔案 演示: # list a = [1,'yx',['x','y'],6]
Java專案中讀寫檔案
1.讀取檔案 InputStream input;//輸入流 InputStreamReader isr = null; BufferedReader br = null; //用於包裝InputStreamReader,提高處理效能。因為
Java讀寫檔案,在檔案中搜索內容,並輸出含有該內容的所有行
1.問題描述 在一個目錄及子目錄下查詢 TXT或Java檔案,從中搜索所有“物件”字樣的行。 在D盤中的所有檔案中搜索含有“物件”的行。 2.解題思路 先找出D盤下所有檔案 再對每個檔案中的每行內容進行,進行查詢,若含有“物件”兩字,輸出該行。 3.程式程式碼 im
hdfs中namenode及DataNode,源資料資訊,讀寫檔案的流程等
客戶端呼叫create()來建立檔案 DistributedFileSystem用RPC呼叫元資料節點,在檔案系統的名稱空間中建立一個新的檔案。 元資料節點首先確定檔案原來不存在,並且客戶端有建立檔案的許可權,然後建立新檔案。 DistributedFileSystem返回DFSOutputStream
Hadoop程式執行中 “沒有許可權讀寫檔案”
問題:在hdfs與本地檔案系統進行檔案讀寫的時候顯示許可權不夠 解決: 1、hdfs中的檔案許可權不夠 檢視hdfs檔案許可權,通過 hadoop fs -chmod 777 XXXX 進行許可權的修改 2、本地(Linux)檔案許可權不夠
Go實戰--golang中讀寫檔案的幾種方式
讀寫檔案應該是在開發過程中經常遇到的,今天要跟大家一起分享的就是在golang的世界中,如何讀寫檔案。 使用io/ioutil進行讀寫檔案 其中提到了兩個方法: func ReadFile func ReadFile(filename string) ([]by
java中的隨機讀寫檔案RandomAccessFile
java中的隨機讀寫檔案: RandomAccessFile raf = new RandomAccessFile(“test.dat”,“rw”); 1.raf.write();這個方法是寫入檔案一個位元組 raf.read();這個方法是讀取檔案一個位
c++中使用fstream讀寫檔案
c++中封裝的類庫ofsream,ifstream用於檔案的讀寫操作; (1)ofstream–用於從流中寫入檔案; //建立並寫入檔案,以寫檔案方式開啟檔案 ofstream TempOut("Test_327.txt"); int niNum = 100
【Unity3D外掛】在Unity中讀寫檔案資料:LitJSON快速教程
介紹 JSON是一個簡單的,但功能強大的序列化資料格式。它定義了簡單的型別,如布林,數(int和float)和字串,和幾個資料結構:list和dictionnary。可以在http://JSON.org瞭解關於JSON的更多資訊。 litjson是用C #編寫的,它的目的是要小,快速,易用。它使
文字模式讀寫檔案中\r和\n的問題
原文地址:http://blog.sina.com.cn/s/blog_65db99840100kidc.html DOS檔案(windows格式檔案)中,按一下ENTER就是輸入了\r\n,這就是回車換行 MAC檔案裡,用\r換行 UNIX檔案裡,用\n換行 自己嘗試了
Python中的檔案IO操作(讀寫檔案、追加檔案)
【注】:下述操作過程是結合多種網路方法,然後自己實踐的結果。寫在這裡,主要目的是加深記憶,也希望能幫助後來者 Python中檔案的讀寫包含三個步驟:開啟檔案,讀/寫檔案,關閉檔案。 檔案開啟之後必
apiCloud中讀寫檔案的方法
在apicloud中分別有api.readfile和api.writeFile兩個方法可以對檔案進行讀寫。 function Examination(){ //alert('ok');//讀取配置資訊並判斷api.readFile({path:'fs://confi
從HDFS檔案系統中讀寫檔案原理
1、從HDFS檔案系統中寫檔案 1、客戶端發起請求要寫檔案 /aa/jdk.tgz 2、namenode會檢查該目錄是否存在,返回是否可寫 3、客戶端請求寫入第一個block 4、namenode返回3個datanode主機
Python 檔案操作中的讀寫模式:open(path, '-模式-',encoding='UTF-8')
open(path, ‘-模式-‘,encoding=’UTF-8’) 即open(路徑+檔名, 讀寫模式, 編碼) 在python對檔案進行讀寫操作的時候,常常涉及到“讀寫模式”,整理了一下常見的幾種模式,如下: 讀寫模式: r :只讀 r+ :
nodeJS中讀寫檔案方法的區別
var fs = require('fs'); fs.open('./message.txt','r',function(err,fd){ var buf = new Buffer(225); //讀取fd檔案內容到buf快取區 fs.read(fd,buf,0,9,3,functio
C++讀寫檔案儲存至容器list中
C++讀寫檔案及容器list基本操作 大家在開始入門C/C++時,都要練習個學生管理系統啥的,主要都為了進一步掌握所學知識,並能使用這些知識。其中這個小專案的重難點就在資料的操作了,其中如
C#中處理讀寫Ini檔案
{ public string FileName; //INI檔名 //宣告讀寫INI檔案的API函式 [DllImport("kernel32")] private static extern bool WritePrivateProfileString(string section