網(wǎng)站制作的評(píng)價(jià)指標(biāo)中手機(jī)網(wǎng)頁設(shè)計(jì)
文章目錄
- 一、前言
- 二、STM32CubeMX生成代碼
- 2.1 選擇芯片
- 2.2 配置相關(guān)模式
- 2.3 設(shè)置時(shí)鐘頻率
- 2.4 生成代碼
- 2.5 編譯并下載代碼
- 2.6 結(jié)果
- 2.7 問題
- 三、回環(huán)測試
- 3.1 打開工程
- 3.2 添加回環(huán)代碼
- 3.3 編譯燒錄并測試
- 四、出現(xiàn)問題和解決方法
- 4.1 燒錄總是要自己插拔USB
- 4.2 自己生成的工程沒有測試成功
一、前言
最近在學(xué)習(xí)STM32的USB功能,主要是想要使用虛擬串口(VCP)功能,來解決串口傳輸速率較低的問題,達(dá)到于上位機(jī)高效通信的目的。
使用芯片:STM32F407ZGT6
使用函數(shù):HAL庫
使用工具:STM32CubeMX + Keil uVision5
串口工具:VOFA
二、STM32CubeMX生成代碼
2.1 選擇芯片
2.2 配置相關(guān)模式
主要配置內(nèi)容:
- 調(diào)試模式為Serial;
- 使用外部時(shí)鐘
- 設(shè)置為USB為從設(shè)備
- 配置為CDC模式的VCP
2.3 設(shè)置時(shí)鐘頻率
有兩個(gè)需要注意點(diǎn):
1. 左邊的這個(gè)數(shù)值是你自己板子上的外部晶振的頻率,具體是多少看你的板子或者去問商家。
2. 最終的頻率要設(shè)置為48MHz。
然后要注意軟件在自動(dòng)選擇晶振頻率的時(shí)候有沒有設(shè)置為外部晶振,如下圖的提示。里面具體一些倍率選擇要自己調(diào)一調(diào),反正最后是48MHz就可以了。
2.4 生成代碼
自己給工程命名然后選擇打開的編譯器
2.5 編譯并下載代碼
編譯一下工程,然后下載到板子上面去。
2.6 結(jié)果
在彈出的彈窗看到下面的提示或者在設(shè)備管理器中查看到下面的設(shè)備就說明成功了
2.7 問題
燒錄之后彈窗說識(shí)別不了USB設(shè)備或者在設(shè)備管理器沒看到多出來的串口
解決方法:
- 重新插拔USB設(shè)備
- 檢查晶振(外部晶振、主晶振、和USB晶振,具體看2.3的提示)是否正確
- 可能USB的引腳沒有上拉電阻(猜想,具體不清楚)
三、回環(huán)測試
如果沒有上面的問題,那恭喜你,可以繼續(xù)往下測試VCP功能了。
3.1 打開工程
3.2 添加回環(huán)代碼
在"usbd_cdc_if.h"
中找到函數(shù)CDC_Receive_FS()
,在里面添加下面的代碼:
CDC_Transmit_FS(Buf, *Len);
最終整個(gè)函數(shù)的代碼如下:
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{/* USER CODE BEGIN 6 */USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);USBD_CDC_ReceivePacket(&hUsbDeviceFS);CDC_Transmit_FS(Buf, *Len);return (USBD_OK);/* USER CODE END 6 */
}
3.3 編譯燒錄并測試
打開串口工具,然后選擇你的串口號(hào),發(fā)送任意字符,就可以看到回傳了你發(fā)送的字符。
四、出現(xiàn)問題和解決方法
4.1 燒錄總是要自己插拔USB
【STM32】USB程序燒錄需要重新上電 & 軟件復(fù)位方法
4.2 自己生成的工程沒有測試成功
使用我的工程,自己對(duì)比一下看看
STM32F407 USB的 CDC 虛擬串口(VCP)程序
https://download.csdn.net/download/weixin_52296952/88775046
去我的主頁的資源
里面找找