image.png

image.png

USB 신호가 정상 동작하는지 확인하기 위해 USB설정 및 CDC를 추가했다.

단순하게 초기화만 하면 자동으로 아래 함수가 호출되어 PC에서 인식할 수 있게 된다.

void MX_USB_DEVICE_Init(void)
{
  /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */

  /* USER CODE END USB_DEVICE_Init_PreTreatment */

  /* Init Device Library, add supported class and start the library. */
  if (USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS) != USBD_OK)
  {
    Error_Handler();
  }
  if (USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC) != USBD_OK)
  {
    Error_Handler();
  }
  if (USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS) != USBD_OK)
  {
    Error_Handler();
  }
  if (USBD_Start(&hUsbDeviceFS) != USBD_OK)
  {
    Error_Handler();
  }

  /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */

  /* USER CODE END USB_DEVICE_Init_PostTreatment */
}

usbd_cdc_if 를 보면 바로 사용할 수 있는 함수가 있다. 이걸 사용해서 간단하게 테스트

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);
#define BUF_SIZE 30
uint8_t usb_buf[BUF_SIZE];
uint32_t count;

void apMain(void)
{
  while(1)
  {
//    cliMain();

    int len;
    len = sprintf(usb_buf, "USB CDC TEST %d\\r\\n", count);
    CDC_Transmit_FS((uint8_t*)usb_buf, len);
    HAL_Delay(1000);
    count++;
  }
}

image.png