【发布时间】:2020-01-30 08:12:45
【问题描述】:
我正在尝试在 PC 和 STM32 MCU 之间建立 USB 通信。我想从 PC 接收整数。 (整数范围在 0 到 20.000 之间)。我添加了这些行:
到 usb_cdc_if.h :
_weak void CDC_ReceiveCallBack(uint8_t *buf, uint32_t len);
到 usb_cdc_if.c
static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len)
{
/* USER CODE BEGIN 6 */
USBD_CDC_SetRxBuffer(&hUsbDeviceFS, &Buf[0]);
USBD_CDC_ReceivePacket(&hUsbDeviceFS);
CDC_ReceiveCallBack(Buf, Len);
return (USBD_OK);
/* USER CODE END 6 */
}
.
.
.
__weak void CDC_ReceiveCallBack(uint8_t *buf, uint32_t len)
{}
在主类中:
void CDC_ReceiveCallBack(uint8_t *buf, uint32_t len)
{
fan_speed=atoi(buf);
memset(statusString,0x00,255);
statusStringLength = sprintf(statusString,"Fan Speed: %d ", fan_speed);
CDC_Transmit_FS(statusString,statusStringLength);
}
所以我只能收到 1 位数字。我应该在函数的开头添加一个 if 语句,当按下 enter 时,我应该从缓冲区接收它吗?
【问题讨论】: