1. 程式人生 > >STM32 USB軟體移植注意事項 及硬體接線注意

STM32 USB軟體移植注意事項 及硬體接線注意

移植了個自定義HID USB程式到STM32開發板上,成功執行,但是最近自己做的板子上(用的是F103C8T6)就不行,死活沒有反應。經過幾番除錯終於發現問題,以下做個小結:

1.一定要保證USB時鐘是48MHZ;

 使用PLL作系統時鐘SCLK;而USB時鐘只能是SCLK的1分頻或者1.5分頻,要得到48MHZ的USB時鐘,則SCLK只能為48MHZ或者72MHZ;由於我是用的內部晶振8MHZ,PLL時鐘最大是8MHZ Div2 再倍頻16 也就是最大隻能到64MHZ,所以只能配成48MHZ才能滿足要求;如果使用外部晶振,PLL可以直接倍頻HSE 而不用Div2;

2.注意中斷向量名稱;

由於我使用的是Keil 裡面ST的例程來移植的,裡面用的啟動檔案是stm32f10x_vector.s,對應USB的中斷向量如下:

而我自己的啟動檔案是startup_stm32f10x_md.s,對應的USB中斷向量如下:


所以寫中斷函式的時候,名字一定要改成與啟動檔案裡的一致:


3.硬體接線也需要特別注意:

USB的D+,D-,對應DP,DM,一定要記得在D+上接一個上拉電阻,通過IO口去控制上拉,直接接上拉的話理論上也是可以的,因為host端是根據D+是否上拉來識別是否有裝置插入的。