STM32 HAL庫,使用USB, 擴大輸入暫存區的方法
- 使用STM32的USB通訊
- CubeMX建立配置
- Serial Wire
- 時鐘配置
- USB配置
- 時鐘頻率設置
- 代碼編寫
- 運行效果
- 總結
使用STM32的USB通訊
STM32可以不用使用串口轉換直接和USB通訊。這給串口調試提供了極大的方便。編程,我使用了STM32CubeIDE編程。這個編程軟件是免費的。不存在版權問題。
CubeMX建立配置
建立一個新的項目,選擇要使用的MCU型號。我使用了STM32F103C8T6,會出現一個這樣的畫面:
在這里選擇要使用的MCU,再輸入項目名稱。開始對應用的參數進行配置。
Serial Wire
這一步非常重要,沒有這一步,可能會使MCU無法下載程序。需要切記。
選擇System Core - Sys:
在Debug中選擇Serial Wire。這時的Pinout View的PA13和PA14會變綠。表明:
PA13 - SWDIO,數據端
PA14 - SWCLK,時鐘端
時鐘配置
我使用的Blue Pill的板子,配備了兩個晶振,一個是32.768KHz的晶振和一個8MHz的晶振。先在SYS CORE中選擇使能HSE,如下:
看到PD0和PD1端子都會變綠。
USB配置
- 選擇使能USB端口
在Connecting下選擇USB,出現了如下畫面:
勾選Device (FS), 這個(FS)是全速的意思。這時的PA11和PA12端子變成了綠色。
下面還要進一步選擇,增加一個中間件。Middleware and Software Package. 選擇USB Device. 這里的選項比較多,
在這里選擇Communication Device Class (Virtual COM Port)
時鐘頻率設置
在大的標題欄上選擇:Clock Configuration
在這個著名的畫面上可以對時鐘頻率進行配置,我們現在關心的時鐘頻率是USB的頻率。
因為是使用了外部時鐘,可以不使用內部的時鐘了。在左下角選擇外部時鐘。PLL Source選擇外部時鐘。Pull Mul選擇9,如下:
如果配置的參數不合適,會變成紅色。把USB Prosclaer選擇1/1.5. 變成48MHz,APB1的Prescaler選擇1/2,時鐘頻率選擇一切正常。最終如圖:
點擊保存,這時就會自動生成一個應用了。
生成的應用的代碼在項目中。注意,這個過程需要注冊,注冊一般要有一個郵箱。注冊完成就可以生成代碼了。生成代碼時會詢問:
回答是。