国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

這篇具有很好參考價(jià)值的文章主要介紹了野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

MCU:STM32F103VET6

開發(fā)環(huán)境:STM32CubeMX+MDK5

?

實(shí)現(xiàn)USB的虛擬串口不需要去理解USB的底層驅(qū)動(dòng),只需要STM32CubeMX去配置生成工程即可。在野火的指南者中,是沒有這一類的視頻和示例的,博主使用這款開發(fā)板實(shí)現(xiàn)USB虛擬串口。

首先需要打開STM32CubeMX工具。輸入開發(fā)板MCU對(duì)應(yīng)型號(hào),找到開發(fā)板對(duì)應(yīng)封裝的MCU型號(hào),雙擊打開(圖中第三)。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

此時(shí),雙擊完后會(huì)關(guān)閉此界面,然后打開一個(gè)新界面。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

然后,我們開始基本配置。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

現(xiàn)在我們選擇一個(gè)LED作為系統(tǒng)LED,該步驟可以忽略,只是本人喜歡這樣子。以硬件原理圖的綠燈為例子。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

基本配置除了時(shí)鐘樹外,基本上已經(jīng)配置好了。

現(xiàn)在來(lái)配置USB_Device。STM32F1系列USB只支持USB_Device。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

選中USB類型后,還需要細(xì)化其中的類型。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

一切配置都是基于硬件原理圖的。硬件配置除常規(guī)配置外,還是需要看硬件原理圖的。在硬件原理圖中,可以看到只有PD6拉低時(shí),USB才使能。(針對(duì)野火指南者開發(fā)板)

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

現(xiàn)在配置時(shí)鐘樹

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

配置完成,完善工程,生成工程。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

到此,STM32CubeMX工具的使用結(jié)束!可以發(fā)現(xiàn)在桌面已經(jīng)生成了USB_VPC工程。

?

USB虛擬串口還需要裝驅(qū)動(dòng)才能被是識(shí)別到,在Win7、Win8機(jī)型PC中需要到ST官網(wǎng)下載。win10及以上機(jī)型在本地已有驅(qū)動(dòng),無(wú)需安裝。

使用MDK5打開USB_VPC工程打開。點(diǎn)擊魔法棒,勾選微庫(kù)。選擇對(duì)應(yīng)的下載器,勾選下載完復(fù)位允許。USB線一端接開發(fā)板USB_Device,一端接PC。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

現(xiàn)在可以開始實(shí)驗(yàn)了,實(shí)現(xiàn)VPC的發(fā)送與回傳,并重定向printf函數(shù)。

在此之前,簡(jiǎn)單描述一下生成的USB文件以及重要函數(shù)。

野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

然后再插播一條,看帖子說(shuō)是,剛下載完程序時(shí),是識(shí)別不出端口的。需要在上電的情況下從PC那拔插一次USB線。然后可以使用一個(gè)函數(shù)解決這個(gè)問(wèn)題??梢栽趃pio.c中寫入函數(shù),然后記得在頭文件聲明。使用要在MX_USB_DEVICE_Iint()之前。

(我沒遇到這個(gè)問(wèn)題,但是我還是放到工程了,但是我沒用這函數(shù)。)

 1 /* USER CODE BEGIN 2 */
 2 /*USB 重新枚舉函數(shù)*/
 3 void USB_Reset(void)
 4 {
 5     GPIO_InitTypeDef GPIO_InitStruct = {0};
 6     
 7     __HAL_RCC_GPIOA_CLK_ENABLE();
 8     
 9     GPIO_InitStruct.Pin = GPIO_PIN_12;
10     GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
11     GPIO_InitStruct.Pull = GPIO_NOPULL;
12     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
13     HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
14     
15     HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_RESET);
16     HAL_Delay(100);
17     HAL_GPIO_WritePin(GPIOA,GPIO_PIN_12,GPIO_PIN_SET);
18 }
19 /* USER CODE END 2 */

?

實(shí)驗(yàn)環(huán)節(jié):發(fā)送與回傳

在main.c中(截取片段,修改部分)

 1 /* Private includes ----------------------------------------------------------*/
 2 /* USER CODE BEGIN Includes */
 3 #include "usbd_cdc_if.h"
 4 /* USER CODE END Includes */
 5 
 6 /* Private typedef -----------------------------------------------------------*/
 7 /* USER CODE BEGIN PTD */
 8 
 9 /* USER CODE END PTD */
10 
11 /* Private define ------------------------------------------------------------*/
12 /* USER CODE BEGIN PD */
13 /* USER CODE END PD */
14 
15 /* Private macro -------------------------------------------------------------*/
16 /* USER CODE BEGIN PM */
17 
18 /* USER CODE END PM */
19 
20 /* Private variables ---------------------------------------------------------*/
21 
22 /* USER CODE BEGIN PV */
23 
24 /* USER CODE END PV */
25 
26 /* Private function prototypes -----------------------------------------------*/
27 void SystemClock_Config(void);
28 /* USER CODE BEGIN PFP */
29 
30 /* USER CODE END PFP */
31 
32 /* Private user code ---------------------------------------------------------*/
33 /* USER CODE BEGIN 0 */
34 
35 /* USER CODE END 0 */
36 
37 /**
38   * @brief  The application entry point.
39   * @retval int
40   */
41 int main(void)
42 {
43   /* USER CODE BEGIN 1 */
44     char str[] = "Hello World!\r\n";
45   /* USER CODE END 1 */
46 
47   /* MCU Configuration--------------------------------------------------------*/
48 
49   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
50   HAL_Init();
51 
52   /* USER CODE BEGIN Init */
53 
54   /* USER CODE END Init */
55 
56   /* Configure the system clock */
57   SystemClock_Config();
58 
59   /* USER CODE BEGIN SysInit */
60 //    USB_Reset();
61   /* USER CODE END SysInit */
62 
63   /* Initialize all configured peripherals */
64   MX_GPIO_Init();
65   MX_USB_DEVICE_Init();
66   /* USER CODE BEGIN 2 */
67 
68   /* USER CODE END 2 */
69 
70   /* Infinite loop */
71   /* USER CODE BEGIN WHILE */
72   while (1)
73   {
74     /* USER CODE END WHILE */
75     CDC_Transmit_FS((uint8_t*)str, 14);
76     HAL_Delay(2000);
77     /* USER CODE BEGIN 3 */
78   }
79   /* USER CODE END 3 */
80 }

在usbd_cdc_if.c中(截取片段,修改部分)

 1 /**
 2   * @brief  Data received over USB OUT endpoint are sent over CDC interface
 3   *         through this function.
 4   *
 5   *         @note
 6   *         This function will issue a NAK packet on any OUT packet received on
 7   *         USB endpoint until exiting this function. If you exit this function
 8   *         before transfer is complete on CDC interface (ie. using DMA controller)
 9   *         it will result in receiving more data while previous ones are still
10   *         not sent.
11   *
12   * @param  Buf: Buffer of data to be received
13   * @param  Len: Number of data received (in bytes)
14   * @retval Result of the operation: USBD_OK if all operations are OK else USBD_FAIL
15   */
16 static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
17 {
18   /* USER CODE BEGIN 6 */
19     CDC_Transmit_FS(Buf, *Len);
20     
21   USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
22   USBD_CDC_ReceivePacket(&hUsbDeviceFS);
23   return (USBD_OK);
24   /* USER CODE END 6 */
25 }

實(shí)驗(yàn)結(jié)果(波特率隨意選)

?野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)

?

?實(shí)驗(yàn)環(huán)節(jié):打印重定向

?在usbd_cdc_if.c中(截取片段,修改部分),聲明在usbd_cdc_if.h文件。

 1 /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */
 2 #include "stdarg.h"
 3 #include "stdio.h"
 4 
 5 uint8_t usbtemp[64];
 6 void usbvcom_printf(const char *format,...)
 7 {
 8     uint16_t     len;
 9     va_list     args;
10     
11     va_start(args, format);
12     len = vsnprintf((char *)usbtemp, sizeof(usbtemp)+1, (char *)format, args);
13     va_end(args);
14     
15     CDC_Transmit_HS(usbtemp, len);
16 }
17 
18 /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */

然后就可以像printf那樣使用了,實(shí)測(cè)過(guò)是正常的!

?

時(shí)代越來(lái)越好,開發(fā)效率越來(lái)越高,希望能幫助到你?。?!

還有就是,開源萬(wàn)歲。?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473347.html

到了這里,關(guān)于野火指南者(STM32F103VET6)應(yīng)用:實(shí)現(xiàn)USB虛擬串口(CDC_VPC)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 野火STM32F103驅(qū)動(dòng)GT911觸摸芯片

    野火STM32F103驅(qū)動(dòng)GT911觸摸芯片

    芯片介紹 GT911 是專為 7”~8”設(shè)計(jì)的新一代 5 點(diǎn)電容觸控 方案,擁有 26 個(gè)驅(qū)動(dòng)通道和 14 個(gè)感 應(yīng)通道,以滿足更高的 touch 精度要求。 GT911 可同時(shí)識(shí)別 5 個(gè)觸摸點(diǎn)位的 實(shí)時(shí)準(zhǔn)確位置 , 移動(dòng)軌跡 及 觸摸面積。 并可根據(jù)主控需要,讀取相應(yīng)點(diǎn)數(shù)的觸摸信息。 芯片原理圖 管腳定

    2024年02月06日
    瀏覽(23)
  • 利用是stm32cubemx實(shí)現(xiàn)雙極性spwm調(diào)制 基于stm32f407vet6

    利用是stm32cubemx實(shí)現(xiàn)雙極性spwm調(diào)制 基于stm32f407vet6

    【雙極性SPWM調(diào)制講解以及基于stm32的代碼生成-嗶哩嗶哩】 https://b23.tv/ytFxdkL 雙極性spwm調(diào)制雖然沒有單極性好用,但比單極性要簡(jiǎn)單易懂一些,以下教程是如何利用stm32實(shí)現(xiàn)雙極性spwm調(diào)制. ? ?T1,T2不能同時(shí)導(dǎo)通,T3,T4也不能同時(shí)導(dǎo)通,否則短路燒管子。 ?解決方法:T1與T2用高

    2024年02月15日
    瀏覽(20)
  • GD32F103VET輸出PWM波形

    GD32F103VET輸出PWM波形

    GD32F103VET將TIMER0_CH3映射到PE14引腳,使其輸出PWM波形。測(cè)試時(shí),使用示波器看PE14引腳輸出的波形,效果更直觀。 TIMER0之PWM輸出引腳映射如下: TIMER0_REMAP[1:0]=\\\"00\\\"(沒有映射): TIMER0_CH0默認(rèn)被映射到PA8引腳 TIMER0_CH1默認(rèn)被映射到PA9引腳 TIMER0_CH2默認(rèn)被映射到PA10引腳 TIMER0_CH3默認(rèn)被映射

    2024年02月14日
    瀏覽(20)
  • STM32F407VET6核心板下載器連接方法

    STM32F407VET6核心板下載器連接方法

    最近總有學(xué)生問(wèn)STM32F407VET6核心板下載器連接方法怎么樣連接,抽空寫了個(gè)博客說(shuō)明下接法吧,如果大家看完博客還問(wèn)的話,那多少有點(diǎn)不禮貌了哈。 硬件購(gòu)買鏈接:https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-14787471870.9.7dec6865WB5Rn5id=557094417101 其它的板子連接就不一樣是這樣了

    2024年02月14日
    瀏覽(29)
  • stm32f407VET6 系統(tǒng)學(xué)習(xí) day01 GPIO 配置

    stm32f407VET6 系統(tǒng)學(xué)習(xí) day01 GPIO 配置

    GPIO,即通用I/O(輸入/輸出)端口,是STM32可控制的引腳。STM32芯片的GPIO引腳與外部設(shè)備連接起來(lái),可實(shí)現(xiàn)與外部通訊、控制外部硬件或者采集外部硬件數(shù)據(jù)的功能。 STM32F407有7組IO。分別為GPIOA~GPIOG,每組IO有16個(gè)IO口,共有112個(gè)IO口 ?通常稱為 PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中

    2023年04月09日
    瀏覽(23)
  • [STM32] - STM32F407VET6使用STM32CubeMX配置FatFs,以及掛載時(shí)返回03錯(cuò)誤碼問(wèn)題的解決

    [STM32] - STM32F407VET6使用STM32CubeMX配置FatFs,以及掛載時(shí)返回03錯(cuò)誤碼問(wèn)題的解決

    為測(cè)試新買的開發(fā)板TF卡讀寫是否正常,使用STM32CubeMX(后簡(jiǎn)稱CubeMX)進(jìn)行代碼構(gòu)建。生成代碼后燒錄測(cè)試,發(fā)現(xiàn)在掛載TF卡時(shí)無(wú)法成功,返回值為錯(cuò)誤3( FR_NOT_READY )。經(jīng)排查后問(wèn)題已解決,遂記錄配置過(guò)程供大家參考,并講解掛載時(shí)返回錯(cuò)誤3的解決方式。 ①為了輸出TF卡(

    2024年02月22日
    瀏覽(35)
  • STM32開發(fā)(十二)STM32F103 功能應(yīng)用 —— NTC 溫度采集

    ??《上一篇》 ???《主目錄》 ???《下一篇》 了解STM32 片內(nèi)資源ADC。本實(shí)驗(yàn)是基于STM32F103開發(fā) 實(shí)現(xiàn) NTC溫度采集。 NTC溫度采集實(shí)現(xiàn): 1、使用查表方式??蓞⒖?/p>

    2024年02月03日
    瀏覽(30)
  • LVGL觸摸移植——stm32野火F103

    LVGL觸摸移植——stm32野火F103

    目錄 系列文章目錄 章目錄 目標(biāo) 一、認(rèn)識(shí)端口文件 二、使能?lv_port_indev.c? 三、接口函數(shù) 1.輸入設(shè)備初始化 四、Main函數(shù) 五、過(guò)程中的疑難雜癥 1.內(nèi)存不足 2、LCD白屏 五、效果 總結(jié) 在顯示的基礎(chǔ)上添加觸摸輸入 提示:以下是本篇文章正文內(nèi)容,下面案例可供參考 這兩個(gè)是

    2024年02月11日
    瀏覽(29)
  • 【正點(diǎn)原子STM32連載】 第十章 STM32CubeMX簡(jiǎn)介 摘自【正點(diǎn)原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    【正點(diǎn)原子STM32連載】 第十章 STM32CubeMX簡(jiǎn)介 摘自【正點(diǎn)原子】STM32F103 戰(zhàn)艦開發(fā)指南V1.2

    1)實(shí)驗(yàn)平臺(tái):正點(diǎn)原子stm32f103戰(zhàn)艦開發(fā)板V4 2)平臺(tái)購(gòu)買地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套實(shí)驗(yàn)源碼+手冊(cè)+視頻下載地址: http://www.openedv.com/thread-340252-1-1.html STM32CubeMX是由ST公司開發(fā)的圖形化代碼自動(dòng)生成工具,能夠快速生成初始化代碼,如配置GPIO,時(shí)鐘樹

    2024年01月15日
    瀏覽(32)
  • STM32F103實(shí)現(xiàn)USB虛擬串口

    STM32F103實(shí)現(xiàn)USB虛擬串口

    ? ? ? ? 今天分享一下STM32F103如何實(shí)現(xiàn)虛擬串口,目標(biāo)是讓新手也能上手,如果誰(shuí)沒看懂或者照著做功能沒有實(shí)現(xiàn)可以私信我,只要我看到一定回復(fù)。 ? ? ? ?本次使用的是STM32F103C8T6核心板,按以下步驟新建一個(gè)STM32CubeMX工程。 ? ? ? ?步驟一 :先輸入MCU型號(hào)搜索芯片,軟件

    2024年02月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包