Saya telah mengerjakan sebuah proyek selama dua minggu terakhir sekarang dan men-debug masalah yang satu ini telah menghabiskan seluruh minggu ini. Ingin tahu apakah ada yang bisa membantu, saya akan mencoba untuk menjadi sejelas dan sejelas mungkin.
Saya mencoba untuk mengimplementasikan Port USB Virtual Comm pada MicroController berdasarkan STM32F302K8 (Cortex M4). Saya telah menggunakan STM32CubMX untuk menghasilkan kode yang diperlukan untuk mengatur Perangkat Kecepatan Penuh USB yang mengimplementasikan kelas CDC. Perangkat saya muncul di Windows (Device Manager) dan Linux. Saya dapat menerapkan fungsi gema sederhana berdasarkan kode contoh tetapi ketika sekarang saya mencoba menggunakan fungsi USBD_CDC_SetTxBuffer untuk mengirim data ke PC, ini memicu Hard Fault Handler. Saya mempersempit ini menjadi kenyataan bahwa bidang UsbDeviceFS.pClass (yang diperlukan oleh USBD_CDC_SetTxBuffer) tidak pernah diinisialisasi karena USBD_CDC_Init () tidak pernah dipanggil dalam inisialisasi Perangkat USB.
Saya telah menerapkan perbaikan ke beberapa bug (termasuk mengubah ukuran tumpukan, memperbaiki bendera transmisi di USBD_CDC_TransmitPacket , dan mengubah ukuran CDC_DATA_HS_MAX_PACKET_SIZE menjadi 256 dari 512) dalam kode contoh seperti yang didokumentasikan pada forum ST tetapi masih mendapatkan kesalahan yang sama.
Kode pengaturan perangkat saya adalah
* 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);
}