
前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 USB通信引脚 与 MCU引脚 对应关系如下: ![]() 原理图 ![]() 一、使用STM32CubeMX----新建USB实验工程 步骤1:打开 STM32CubeMX 软件 具体 STM32CubeMX 界面如下: ![]() 步骤2:选择 从MCU开始我的项目 ![]() 步骤3:选择MCU芯片 我们本次实验选择 STM32F407VET6 芯片做 MCU。 ![]() 进入工程编辑,具体界面如下: ![]() 步骤4:设置烧写方式为 SWD模式 这一步必须选择一种烧写方式,否则烧写一次程序后,芯片中就没法再次烧写程序了。需要硬件重启才可以重新烧写程序 ![]() 步骤5:设置时钟源 设置外部晶振为芯片系统时钟源。 ![]() 步骤6:USB通信配置 激活 USB 设备 ![]() 选择CDC模拟串口 ![]() 步骤7:设置时钟 因为USB的时钟需要 48MHz,所以时钟配置如下: ![]() 步骤8:项目编辑 堆设置大一点,否则识别不到USB。 ![]() 步骤9:代码生成编辑 ![]() 步骤10:点击 GENERATE CODE 生成代码 ![]() 新建的工程,已经生成,接下来就是对工程代码的编辑。 二、使用keil5----编辑程序 想要使用keil5打开工程,需要电脑先安装 keil5编译环境,具体操作流程。 步骤1:使用keil5打开工程 点击工程文件中的MDK-ARM 文件 ![]() 打开keil5工程 ![]() 步骤2:用户代码编辑位置 用户代码 要写在 USER xxxx BEGIN xxx 和 USER xxxx END xxx 之间。 这样下次使用 STM32CubeMX 重新生成代码后,自己写的代码不会被删除。 ![]() 步骤3:查看USB虚拟串口的端口 首先编译程序,然后烧录程序到开发板,具体步骤如下: 烧写完程序后,连接开发板和PC端电脑,然后在设备管理器中查看USB虚拟串口的端口。 有以下端口,就说明USB虚拟串口功能实现了。 ![]() 步骤4:USB虚拟串口发送数据 在 usbd_cdc_if.c 文件中有 USB虚拟串口发送函数:
将头文件 #include "usbd_cdc_if.h" 添加到 main.c 中。 ![]() 在 main主函数循环中添加 USB虚拟串口发送函数
使用串口助手打印数据如下: ![]() 步骤5:USB虚拟串口接收数据 在 usbd_cdc_if.c 文件中,有 USB虚拟串口接收函数:
在USB虚拟串口接收函数中添加 CDC_Transmit_FS(Buf,*Len);,将接收到的数据发送出去。 ![]() 使用串口助手调试如下: ![]() ———————————————— 版权声明:根号五 |
兔哥的边缘AI【001】——DIY-STM32N6全IO扩展板
兔哥的BLE【002】-WB09最小系统板PCB设计
兔哥的L4【001】——32脚的小板
新版STM32Cube for Visual Studio Code开发体验
【STM32C0测评】Nucleo-C092开发板驱动DS1302实验
【ST云实验室先锋计划】兔哥的IO-LINK 云上体验
拷打cubemx【003】——找不到的芯片包
【STM32N6570-DK评测】3.CubeMX关于DCMIPP和CSI的BUG整理及摄像头使用
经验分享常被误解的开、关总中断
【STM32C0测评】Nucleo-C092开发板功耗测试