我尝试了很多不同的驱动程序,无法通过USBSerial成功地将数据从uC发送到计算机。我正在尝试使用mbed官方的USBSerial驱动程序,但是使用KL25Z前叉和ST微型叉以及mbed OS2和OS5具有相同的结果。我能够从计算机到uC自由接收字节,但是我无法向另一个方向发送数据。
我尝试了3种不同的方法将数据发送到计算机:_putc(),writeBlock()和printf()。对于所有这三种方法,第一个字节成功发送回计算机,但随后设备卡在USBDevice.cpp中第863行的无限循环中。这是等待完成' USBDevice :: write()函数的一部分。
我觉得我没有足够的USB接口知识来正确调试这个驱动程序。
我已发布我的测试程序here。
#include "mbed.h"
#include "USBSerial.h"
//Virtual serial port over USB
USBSerial serial;
DigitalOut thisLED(LED1);
char temp[1];
void receiveSerial()
{
while (serial.readable())
{
temp[0] = serial._getc();
serial._putc(temp[0]);
//serial.writeBlock((uint8_t *) temp,1);
//serial.printf(temp);
}
}
int main(void) {
serial.attach(&receiveSerial);
while(1)
{
thisLED = !thisLED;
wait(1);
}
}