我有一个STM32 f401RE。我正在使用Mbed library设置从STM32到PC的对接。我想通过串行发送一个char序列到板。作为一个答案,我希望LED闪烁。例如:led1
产生LED ON
,led2
产生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
表示。我将如何转换为六种地址-这是我要做的吗?
您不必改变任何东西或弄乱USB product_id
或vendor_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电缆仅用于充电,对您的用途没有好处,而另一些在一段时间后就失效了)。我首先要确保您的电缆可与其他设备配合使用(显然不能仅用于充电)。您的电路板也有可能变坏了(或来自工厂),但这是不太可能的。