Ich verwende die STM32 VCP-Firmware und möchte Daten vom STM32F4 Discovery Board auf meinen PC übertragen. Die Konfiguration des virtuellen COM-Ports ist in Ordnung, die Eigenschaften im Gerätemanager sind folgende:
In Englisch: 9600 Bit/s, 8 Datenbit, keine Parität, 1 Stoppbit, keine Hardware-Flusskontrolle. Ich versuche, Zeichen in Realterm mit diesen Parametern zu empfangen, aber ich bekomme sie nicht, es sieht wie folgt aus:
Was könnte ich falsch machen?
BEARBEITEN:
Die MCU sendet mit folgendem Codeschnipsel:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USB_DEVICE_Init();
uint8_t Buf[] = "test";
HAL_Delay(1000);
while (1)
{
CDC_Transmit_FS(Buf, 4);
HAL_Delay(1000);
}
}
Die CDC_Transmit_FS
Implementierung ist fehlerhaft (zumindest in der Version, die ich mir anschaue):
uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
{
uint8_t result = USBD_OK;
/* USER CODE BEGIN 8 */
USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len);
result = USBD_CDC_TransmitPacket(hUsbDevice_0);
/* USER CODE END 8 */
return result;
}
Wie Sie sehen können, Buff
wird der Parameter nie in der Funktion verwendet. Sie können versuchen, die Funktion zu ändern, indem Sie die Buff
in UserTxBufferFS
(using memcpy
oder was auch immer) kopieren.
memcpy(UserTxBufferFS, Buf, sizeof(char) * Len);
before USBD_CDC_SetTxBuffer(hUsbDevice_0, UserTxBufferFS, Len);
werden die Daten übertragen, und ich kann es in RealTerm sehen. :)Buf
gleich ist UserTxBufferFS
.UserTxBufferFS
durch Buf
.
MD
Mailand Tenk
Eugen Sch.
Mailand Tenk
Eugen Sch.
Eugen Sch.
MD
Eugen Sch.
Mailand Tenk
Eugen Sch.
Mailand Tenk
Eugen Sch.
Eugen Sch.
Mailand Tenk
Mailand Tenk
Eugen Sch.
CDC_Transmit_FS
Code, den Sie verwenden, auf Pastebin posten, um ihn zu überprüfen?Mailand Tenk