STM32_USB_HAL - GitMasterNikanjam/ARM_WiKi GitHub Wiki
Configuration in STM32CUBEMX
1- Go to Connectivity- -> USB_OTG_FS
2- Select mode to Device only
3- Go to Middleware and Software Packs -> USB_DEVICE
4- Select Class For FS IP to Communication Device Class (Virtual Port Com)
Program Code in IDE
Important Functions
- static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len);
- uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len);
Steps in Code
1- Add #include "usbd_cdc_if.h"
at USER CODE Includes in main.c
file
2- Add uint8_t buffer[64];
at USER CODE Global Private variables in main.c
file
buffer[64] is a variable that store data at receive usb data. the size and name of it can be arbitrary.
3- Add extern uint8_t buffer[64];
at USER CODE Global Private variables in usbd_cdc_if.c
file
4- Edit CDC_Receive_FS
function in usbd_cdc_if.c
file:
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);
uint8_t len = (uint8_t) *Len;
memset(buffer, '\0', 64);
memcpy(buffer, Buf,len);
memset(Buf, '\0', len);
return (USBD_OK);
/* USER CODE END 6 */
}
5- Use CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
function in main.c
file