Zen的小站

小舟从此逝,江海寄余生

0%

【HAL库】USB

文章概览

设置USB虚拟串口

在CUBEMX中需要配置两处

Connectivity中

image-20230112230239663

和Middleware

image-20230112230152699

之后可以直接发送数据

1
2
#include "usbd_cdc_if.h"
CDC_Transmit_FS(buff,sizeof(buff)); //USB 串口发送数据

发送数据代码 printf

生成的 usbd_cdc_if.c 文件是管理收发数据的

重定义print功能,需要重新定义一个函数代替使用

  1. 需要手动添加 include

    1
    2
    3
    /* USER CODE BEGIN Includes */
    #include "usbd_cdc_if.h"
    /* USER CODE END Includes */
  2. 在 usbd_cdc_if.c 中添加 usb_printf 函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    /* USER CODE BEGIN PRIVATE_FUNCTIONS_IMPLEMENTATION */

    #include <stdarg.h>

    void usb_printf(const char *format, ...)
    {
    va_list args;
    uint32_t length;

    va_start(args, format);
    length = vsnprintf((char *)UserTxBufferFS, APP_TX_DATA_SIZE, (char *)format, args);
    va_end(args);
    CDC_Transmit_FS(UserTxBufferFS, length);
    }

    /* USER CODE END PRIVATE_FUNCTIONS_IMPLEMENTATION */

    之后可以直接把 usb_printf 当成 printf 使用

    接收数据代码

待研究

多想多做,发篇一作

-------------本文结束感谢您的阅读-------------
// 在最后添加