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

歷史上的今天

今天是:2025年06月12日(星期四)

2019年06月12日 | STM32 USB 之從0開始移植筆記

發布者:不加糖的302 來源: eefocus關鍵字:STM32  USB  移植筆記 手機看文章 掃描二維碼
隨時隨地手機看文章

-----------------------------------動機-----------------------------------

寫在前面的話:最近逛淘寶無意間發現RC522居然只要10元左右就可以包郵買到,真是太便宜了,就忍不住買了個回來玩玩。到貨移植到我的板子上OK 后突然發現我的USB口緊張了,一個用來給板子供電一個插jlink 一個插入usb轉串口給RC522下命令。就想著將板子供電和RC522傳輸用一個USB接口來實現。這就是這次折騰USB的來由~-~

       ----------------------------------開始折騰USB-----------------------------

  首先我想拿來主義,百度一個完整的USB范例就完事。以上就百度了下STM32 USB HID

那就一個多啊,已是我就下一個看一個看是否適合我用。很快我就發現了兩個問題不能說所有至少我百度到到都是這樣:

1.      這些范例大都是在官方USB范例上修改得來,工程名都沒做修改。

2.      這些范例大都是用的3.x的USB FW,官網上我搜到的已是4.0了

3.      這些范例中STM中為了兼容他的N個板子做了很多通用性的處理。這些對于初學者來說不夠清晰明了。

所以我決定從0開始構建一個方便移植的模塊,移植他的JoyStickMouse。在我的項目中用到時加入這個模塊即可。

首先從官網下載最新的USB庫得到的是一個壓縮包stsw-stm32081.zip解壓后如圖:

        

Projects 是官方的范例,Libraries 是USB的4.0驅動

接下來用MDK建立一個工程我用的MDK是4.12  STM的固件庫是3.5的 USB庫就是4.0的了,芯片用的是STM32F103VC   建立以下文件夾

  

在USBFW 下建立兩個文件夾分別存放USB的底層驅動文件和中間層接口文件并把STM32_USB-FS-Device_Lib_V4.0.0LibrariesSTM32_USB-FS-Device_Driver中的inc和src復制到DRIVER文件夾內,把STM32_USB-FS-Device_Lib_V4.0.0ProjectsJoyStickMouse中的inc和src復制到MID文件夾內。一般我們只要修改MID層的文件而DRIVER是不用修改的。

 

  建好后的工程截圖:

     

這個時候編譯下可能出來一大堆的錯誤。這個USB的源碼分析百度有很多很好的文章講解的非常詳細大家可以自行百度。

  接下來說說我的修改----------------------------------------

首先在usb_conf中定義了Buffer Description Table 

      


 這個0x18意味著留24字節給table  只用到3個端點了,一般我們用端點0枚舉,端點1輸入,端點2輸出這個定義是夠用了,如果你的端點應用大于3 就要修改這個表的大小了。

-------------------------------------------修改硬件抽象---------------------------------------------------------

在有3個文件相關:

1.      platform_config.h  STM官方板子的資源平臺配置文件。

2.      hw_config.c   hw_config.h  USB的硬件相關配置

首先我用的不是官方板子,把#include "platform_config.h"注釋掉只保留其中的ID和USB接入檢測機制的上拉控制IO宏定義(我的板子是PC6,這個根據實際情況修改即可)

   

  官方范例中在main 用

Set_System();

 

 USB_Interrupts_Config();

 

 Set_USBClock();

 

USB_Init();

完成了USB的初始化工作,

Set_System();

這個名字太大了,很顯然用在我的項目中太大好聽,修改hw_config.c

    voidUSB_Configurage(void)

{

         GPIO_InitTypeDefGPIO_InitStructure;

        

         /*enable the PWR clock */

         RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

         //USB用的IO

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

         //USB時鐘

         Set_USBClock();

 

        

        

         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);

         GPIO_InitStructure.GPIO_Pin= GPIO_Pin_6;

         GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;

         GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_OD;

         GPIO_Init(GPIOC,&GPIO_InitStructure);

 

        /*C6-USB接入控制口 */

           /* Enable the USB disconnect GPIO clock */

           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_DISCONNECT,ENABLE);

           /* USB_DISCONNECT used as USB pull-up */

           GPIO_InitStructure.GPIO_Pin =USB_DISCONNECT_PIN;

           GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

           GPIO_Init(USB_DISCONNECT,&GPIO_InitStructure); 

 

         USB_Cable_Config(DISABLE);

         USB_Cable_Config(ENABLE);

 

         USB_Interrupts_Config();

         USB_Init();

}

最后在usb_pwr.c 做些小改動,因為不知道他那個板子是怎么喚醒的,所以把那些都屏蔽掉了。具體見代碼

 

這樣在main.c中只要USB_Configurage(); 就搞定USB初始化了,當然還要在h文件中做些接口聲明和去掉一些和我的板子硬件關系不大的函數,目的只有一個簡單明了。


 

編譯一下,通過。這樣以后在任何一個項目中要用到USB時只要復制USBFW中的文件,然后小改下MID層的文件就可以用上USB了,在main.c中只要

#include"usb_lib.h"

#include"hw_config.h"

#include"usb_pwr.h"

 在任何需要發送數據的地方將數據寫入buff就完成了,當然不同的應用可能還要修改端點初始化和描述符等等,但這些應該都是大把的例子可以參照復制的了。具體看代碼咯個人覺得st的c應用還是很好的特別是指針函數數組這塊 ~-~

我的板子用了4個按鍵(PD3:6)來控制PC的光標4個方向的移動,將代碼下到板子上的結果就是按下相應的按鍵光標就移動咯

至此就移植完了


關鍵字:STM32  USB  移植筆記 引用地址:STM32 USB 之從0開始移植筆記

上一篇:STM32f103USB移植之USB鼠標
下一篇:STM32F103RCT6移植到STM32F103C8T6注意事項

推薦閱讀

中國北京,2018 年 6 月 11 日——全球領先的嵌入式系統解決方案領導者、LoRa 聯盟成員之一的賽普拉斯半導體公司(納斯達克代碼:CY)近日宣布,其與 Semtech 公司(納斯達克代碼:SMTC)緊密合作,助力 Onethinx 公司開發出了基于LoRaWAN? 的小型雙芯片模組。這款高度集成的Onethinx 模組整合多個傳感器,能夠在復雜的射頻環境下工作,因此...
1.實現平臺兩塊STM開發板,杜邦線;初始化板子上的串口;為串口開啟中斷;根據需要制定兩個板子的通訊協議。2.實現過程2.1協議制定在工程實踐的過程中,常常需要兩個板子進行通訊來實現功能。現在常常使用的通訊方法常常是CAN通信,TTL通訊,RS485通訊,RS232通訊,I2C,I2S,SPI等。UART也是一種常用的通訊方式,這種通訊方式為全雙工。制定協議時應注意以...
據外媒national post報道,加拿大間諜機構的前負責人認為,即使華為的5G網絡被禁止使用,中國對加拿大及其五眼盟友也只能造成“有限”的傷害。“從加拿大的角度來看,我認為實際上中國對我們任何一個國家所造成的傷害都是有限的。”加拿大安全情報局(CSIS)的前負責人理查德·法登(Richard Fadden)說到,“這與越南,馬來西亞或世界上某些國家可能感受...
近日,有媒體報道稱,寶馬、福特、戴姆勒等汽車公司有意在中國建立汽車數據存儲中心。在此之前,特斯拉通過官方微博宣布已在中國建立數據中心,以實現數據存儲的本地化。同時,特斯拉也將向車主開放車輛信息查詢平臺。繼特斯拉維權事件后,越來越多的跨國車企開始注重汽車數據安全問題。近日,有媒體報道稱,寶馬、福特、戴姆勒等汽車公司有意在中國建立汽...

史海拾趣

問答坊 | AI 解惑

線性電路中的過渡過程

線性電路中的過渡過程…

查看全部問答∨

wince上電自啟動,如何不出現桌面,直接出現我的程序界面?

我現在用注冊表的方式,讓我的程序(窗口程序)在gwes,explore之后啟動。這樣會先出現桌面2,3秒再出現我的程序。 如果希望不出現桌面,要怎么做。…

查看全部問答∨

VC程序移植的一個問題

我用VC寫的程序移植到WinCE中,原來用到了一個CHtmlView類,但在WinCE中不支持,怎么辦啊?…

查看全部問答∨

播放器在wince5.0中,無法準確的定位播放位置

先詳細解釋一下標題的意思。    我的播放器運行在wince5.0中,我編寫了各種各樣的播放器,有使用WMP的,有使用TCPMP的,有使用用DSHOW的,都會有這么個情況:    我要跳轉到視頻的某個位置,比如說10s,不能準確的設置到10s,而 ...…

查看全部問答∨

【連載】【ALIENTEK MiniSTM32 開發板】STM32不完全手冊--PWM輸出實驗(實驗八)

ALIENTEK開發板購買地址:http://shop62103354.taobao.com/ [ 本帖最后由 正點原子 于 2010-8-30 09:37 編輯 ]…

查看全部問答∨

香帥,請教。MDK軟件仿真沒有CAN外設。

MDK 3.80 STM32F107 調試時,外設沒有CAN部分,我在網上聽說別人的有,我估計是不是安裝了什么插件。請教!上圖求真相! 下載 (31.08 KB) 2009-12-22 17:33 …

查看全部問答∨

求助:MSP430F149采樣問題

各位大俠,幫小弟看看這個問題: 我想用430做數據采集,雙通道數據采集,每個通道采集64個點之后,通過IO口來發送,現在是ADC這塊都有問題。采樣頻率為20KHz以上,使用TIMERA.OUT1為觸發源。 問題是:我單步運行運行到ADCTL0 |= ADC12SC;這條語句 ...…

查看全部問答∨

電壓跟隨器的作用有哪些?

在百度百科中看到 電壓跟隨器的其中一個好處是,提高了輸入阻抗,這樣,輸入電容的容量可以大幅度減小,為應用高品質的電容提供了前提保證。 為什么可以說:輸入電容的容量可以大幅度減小? 小弟初入模擬電子的世界,還請各位幫忙解釋一下,非 ...…

查看全部問答∨

求c2000 renewable energy developer skit電路圖n

按理說在官網和controlSUITE上應該有的,但是我就是找不到,求個位大哥指點。具體實物為下圖: …

查看全部問答∨

Getting Started with the Stellaris LaunchPad- Chapter 6

$(\'flv_rZr\').innerHTML=(AC_FL_RunContent(\'width\', \'600\', \'height\', \'475\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://www.tudou.com/v/coqQl5OqhHw/&rpid=106547959&resourceId=1065 ...…

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

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 沽源县| 越西县| 承德市| 色达县| 栖霞市| 谷城县| 绥阳县| 永新县| 崇阳县| 泰宁县| 从化市| 大足县| 华宁县| 北京市| 会昌县| 邳州市| 光山县| 广安市| 榆林市| 高雄市| 樟树市| 崇礼县| 房山区| 富顺县| 扎囊县| 安多县| 和顺县| 拜城县| 丹寨县| 图木舒克市| 德格县| 抚松县| 吉林市| 定边县| 武冈市| 商南县| 阳东县| 浠水县| 巨野县| 通榆县| 盘山县|