使用Mbed库在STM32和PC之间建立串行USB通信

问题描述 投票:0回答:1

我有一个STM32 f401RE。我正在使用Mbed library设置从STM32到PC的对接。我想通过串行发送一个char序列到板。作为一个答案,我希望LED闪烁。例如:led1产生LED ONled2产生LED OFF

问题是我不知道如何设置连接端口。

#include "mbed.h"
#include "USBSerial.h"

//Virtual serial port over USB
USBSerial serial;

int main(void) {

    while(1)
    {
        serial.printf("I am a virtual serial port\r\n");
        wait(1.0);
    }
}

您可以使用USBSerial接口来仿真USB上的串行端口。您可以将此串行端口用作额外的串行端口或用作调试解决方案。它还可以在Mbed与计算机之间进行通信。

我想做以上所有事情(甚至我都不知道通过USB模拟串行端口。什么是虚拟USB?)。

我看到USBSerial构造函数需要USBSerial (bool connect_blocking=true, uint16_t vendor_id=0x1f00, uint16_t product_id=0x2012, uint16_t product_release=0x0001)。而且我认为我需要修改其中一些地址。问题是在Windows上,端口在设备管理器中以COMxx表示,在Linux上以ttyACMxx表示。我将如何转换为六种地址-这是我要做的吗?

c++ serial-port stm32 mbed nucleo
1个回答
0
投票

您不必改变任何东西或弄乱USB product_idvendor_id,mbed串行端口应显示为任何其他串行端口,因此,如果不适合您,则说明您遇到了驱动程序问题。 >

在最新的Linux发行版上,设备应显示类似于以下内核消息的内容:

 cdc_acm 5-2:1.1: ttyACM0: USB ACM device
 usbcore: registered new interface driver cdc_acm
 cdc_acm: v0.26:USB Abstract Control Model driver for USB modems and ISDN adapters

在Windows上,您可能需要安装驱动程序。完成此操作后,串行端口应在设备管理器上显示为mbed Serial Port (COMx)。您可以在许多地方获得故障排除帮助,例如,请参阅here

事实上,在Windows和Linux上都收不到任何东西,这使人怀疑是否使用了正确的电缆(某些USB电缆仅用于充电,对您的用途没有好处,而另一些在一段时间后就失效了)。我首先要确保您的电缆可与其他设备配合使用(显然不能仅用于充电)。您的电路板也有可能变坏了(或来自工厂),但这是不太可能的。

© www.soinside.com 2019 - 2024. All rights reserved.