freeRTOS操作系统机器人实现
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.2 KiB

3 days ago
/******************************************************************************
(C), 2018-2099, Radkil
******************************************************************************
: bsp_usb.c
: 稿
: Radkil
: 2026510
:
: usb底层中间层
:
1. : 2026510
: Radkil
:
******************************************************************************/
#include "bsp_usb.h"
#ifdef USE_USB
#include "usbd_cdc_if.h"
/*----------------------------------------------*
* *
*----------------------------------------------*/
/*----------------------------------------------*
* *
*----------------------------------------------*/
/*----------------------------------------------*
* *
*----------------------------------------------*/
/*----------------------------------------------*
* *
*----------------------------------------------*/
/*----------------------------------------------*
* *
*----------------------------------------------*/
TComCtrl *g_ptusbcdc;
/*----------------------------------------------*
* *
*----------------------------------------------*/
/*----------------------------------------------*
* *
*----------------------------------------------*/
int usb_cdc_send(char *_pBuffer, uint32_t _iSize)
{
uint32_t iTimeout = 10000;
while (CDC_Transmit_FS((uint8_t*)_pBuffer, _iSize) == USBD_BUSY && iTimeout--)
{
for(volatile int i = 0; i < 100; i++);
}
return 0;
}
void usb_cdc_recv(uint8_t* _pBuffer, uint32_t _iSize)
{
rd_ComRecvProc(g_ptusbcdc, (const char *)_pBuffer, _iSize);
}
TComCtrl *bsp_usb_init(void)
{
g_ptusbcdc = rd_ComCreate(NULL, NULL, usb_cdc_send, CONFIG_USB_CDC_BUFFER_SIZE, NULL);
return g_ptusbcdc;
}
#endif