STM32 USB VCPバグ
私は過去2週間プロジェクトに取り組んでおり、この1つの問題のデバッグにこの1週間かかりました。誰かが助けてくれるかどうか疑問に思って、私はできるだけ明確で明確になるように努めます。 STM32F302K8(Cortex M4)に基づくマイクロコントローラーにUSB仮想通信ポートを実装しようとしています。STM32CubMXを使用して、CDCクラスを実装するUSBフルスピードデバイスをセットアップするために必要なコードを生成しました。デバイスがWindows(デバイスマネージャー)とLinuxの両方に表示されます。サンプルコードに基づいて単純なエコー関数を実装できますが、関数USBD_CDC_SetTxBufferを使用してPCにデータを送信しようとすると、ハードフォールトハンドラーが起動します。USBD_CDC_Init()がUSBデバイスの初期化で呼び出されないため、UsbDeviceFS.pClass(USBD_CDC_SetTxBufferで必要)フィールドが初期化されないという事実にこれを絞り込みました。 STフォーラムに記載されているサンプルコードのいくつかのバグ(ヒープサイズの変更、USBD_CDC_TransmitPacketの送信フラグの修正、CDC_DATA_HS_MAX_PACKET_SIZEのサイズの256への変更など)の修正を実装しましたが、同じエラーが発生します。 デバイスのセットアップコードは * USB Device Core handle declaration */ USBD_HandleTypeDef hUsbDeviceFS; /* init function */ void MX_USB_DEVICE_Init(void) { /* Init Device Library,Add Supported Class and Start the library*/ USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS); USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC); USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS); USBD_Start(&hUsbDeviceFS); }