1

我正在尝试为蓝色药丸 STM32F103 制作一个可用于多个项目的基础项目。我希望能够使用 mirco-USB 端口刷新设备并使用串行 COM 端口发送命令

到目前为止,我有:

  • 使用 STLINK 工具成功创建了一个基于“hello world”闪烁 LED 生成文件的项目下载到设备
  • 创建 UART 命令接口以通过串行 FTDI 设备进行命令
  • 将 DFU 引导加载程序刷到芯片上,并成功使用它将我自己的(makefile 编译)bin 刷到设备上

使用 DFU 时,我发现将 .bin 刷入设备后,它不再显示为 USB 设备。按照下面链接的文章,我不需要修改我的项目代码的ROM地址,我在我的makefile项目链接器中将文件大小缩短到55k,但仍然没有成功

https://os.mbed.com/users/devanlai/code/STM32F103C8T6_USBDFU/graph/ https://github.com/devanlai/dapboot/releases/tag/v0.1

我的问题:

  • 使用 DFU 引导加载程序时,一旦我的代码运行,如果我的应用程序代码中没有写入 USB 堆栈,它应该如何作为 USB 设备可见?
  • 我需要移动 bluepill 上的跳线吗?我已经尝试了各种组合但没有成功
  • 在我的项目中通过 USB 获得串行通信和引导加载程序而不编写和调试我自己独特的引导加载程序的最佳方法是什么?
4

2 回答 2

1

因此,如果我正确理解了您的问题,那么您希望通过 USB 使用 DFU 闪存您的 MCU 板,并在它运行时连接到 USB 串行端口。

这可以完成,因为 DFU 功能是引导加载程序的一部分,而 USB 串行端口是应用程序的一部分。

创建虚拟 com 端口的最简单方法是使用 STM32 CubeMX USB CDC。在这里可以找到一个视频示例。CubeMX 生成的源代码可以拉出来添加到自己的项目中。

于 2020-01-13T09:20:14.220 回答
0

我担心它不会再作为 USB 设备出现,除非您在代码中实现 USB 堆栈。

在我的项目中通过 USB 获得串行通信和引导加载程序而不编写和调试我自己独特的引导加载程序的最佳方法是什么?

只有一种方法 - 您需要在应用程序中使用 USB 堆栈。

于 2020-01-12T19:44:41.460 回答