|
本帖最后由 winddevil 于 2022-1-26 13:12 编辑
1.代码如下:这样就不能接收到数据,改为1000就可以接收数据
2.是因为我使用的串口调试助手有问题吗,请问应该使用什么上位机
3.如果是2.的问题,虚拟串口是需要专用上位机的吗
- /*
- *********************************************************************************************************
- *
- * 模块名称 : USB-Device-CDC-HighSpeed
- * 文件名称 : USBD_User_CDC_HighSpeed.c
- * 版 本 : V0.1
- * 说 明 : RL-USB Device-CDC虚拟串口高速模式
- *
- * 修改记录 :
- * 版本号 日期 作者 说明
- * V0.1 2022-01-23 winddevil 测试
- *
- * Copyright (C), 2019-2030, EMB310
- *
- *********************************************************************************************************
- */
- #include "bsp.h"
- #include "rl_usb.h"
- #define USB_BUFFER_SIZE 128
- #define USB_SEND_BUFFER_SIZE 1024
- uint8_t USBD_HIGHSPEED_CDC_Receive_Buf1[USB_BUFFER_SIZE];
- uint8_t USBD_HIGHSPEED_CDC_Receive_Buf2[USB_BUFFER_SIZE];
- uint8_t USBD_HIGHSPEED_CDC_Receive_Buf3[USB_BUFFER_SIZE];
- uint8_t USBD_HIGHSPEED_CDC_Send_Buf1[USB_SEND_BUFFER_SIZE];
- int usb_buffer_cnt=0;
- int usb_send_cnt=0;
- int recive_flag=1;
- static void *cdc_acm_bridge_tid = 0U;
- static CDC_LINE_CODING cdc_acm_line_coding = {0U, 0U, 0U, 0U};
- /*
- *********************************************************************************************************
- * 函 数 名: CDC1_ACM_UART_to_USB_Thread
- * 功能说明: USB发送任务
- * 形 参: 无
- * 返 回 值: 无
- * 优 先 级: osPriorityNormal
- *********************************************************************************************************
- */
- #ifdef USB_CMSIS_RTOS2
- __NO_RETURN static void CDC1_ACM_UART_to_USB_Thread(void *arg)
- {
- #else
- __NO_RETURN void CDC1_ACM_UART_to_USB_Thread(void const *arg)
- {
- #endif
- (void)(arg);
-
- for (;;)
- {
- USBD_CDC_ACM_WriteData(1U, USBD_HIGHSPEED_CDC_Send_Buf1, USB_SEND_BUFFER_SIZE);
- osDelay(100U);
- }
- }
- #ifdef USB_CMSIS_RTOS2
- #ifdef USB_CMSIS_RTOS2_RTX5
- /*控制块内存*/
- static osRtxThread_t cdc1_acm_uart_to_usb_thread_cb_mem __SECTION(.bss.os.thread.cb);
- /*栈内存*/
- static uint64_t cdc1_acm_uart_to_usb_thread_stack_mem[512U / 8U] __SECTION(.bss.os.thread.stack);
- #endif
- /*线程参数设置*/
- static const osThreadAttr_t cdc1_acm_uart_to_usb_thread_attr = {
- "CDC1_ACM_USB_Thread",
- 0U,
- #ifdef USB_CMSIS_RTOS2_RTX5
- &cdc1_acm_uart_to_usb_thread_cb_mem,
- sizeof(osRtxThread_t),
- &cdc1_acm_uart_to_usb_thread_stack_mem[0],
- #else
- NULL,
- 0U,
- NULL,
- #endif
- 512U,
- osPriorityNormal,
- 0U,
- 0U};
- #else
- extern const osThreadDef_t os_thread_def_CDC0_ACM_UART_to_USB_Thread;
- osThreadDef(CDC0_ACM_UART_to_USB_Thread, osPriorityNormal, 1U, 0U);
- #endif
- /***********************************CDC-ACM的回调函数们*************************************************/
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_DataReceived
- * 功能说明: USB接收回调
- * 形 参: len 可接收的数据长度
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void USBD_CDC1_ACM_DataReceived(uint32_t len)
- {
- int32_t cnt;
-
- /*CDC接收的数据储存*/
- if(len>=USB_BUFFER_SIZE)
- {
- if(s_DmaFlag==2)
- {
- cnt = USBD_CDC_ACM_ReadData(1U, USBD_HIGHSPEED_CDC_Receive_Buf1, USB_BUFFER_SIZE);
- }
- else if(s_DmaFlag==1)
- {
- cnt = USBD_CDC_ACM_ReadData(1U, USBD_HIGHSPEED_CDC_Receive_Buf2, USB_BUFFER_SIZE);
- }
- else
- {
- cnt = USBD_CDC_ACM_ReadData(1U, USBD_HIGHSPEED_CDC_Receive_Buf3, USB_BUFFER_SIZE);
- }
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_Initialize
- * 功能说明: USB初始化回调,USBD_Initialize会调用到它
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void USBD_CDC1_ACM_Initialize(void)
- {
- #ifdef USB_CMSIS_RTOS2
- cdc_acm_bridge_tid = osThreadNew(CDC1_ACM_UART_to_USB_Thread, NULL, &cdc1_acm_uart_to_usb_thread_attr);
- #else
- cdc_acm_bridge_tid = osThreadCreate(osThread(CDC0_ACM_UART_to_USB_Thread), NULL);
- #endif
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_Uninitialize
- * 功能说明: USB失能回调
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void USBD_CDC1_ACM_Uninitialize(void)
- {
- if (osThreadTerminate(cdc_acm_bridge_tid) == osOK)
- {
- cdc_acm_bridge_tid = NULL;
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_Reset
- * 功能说明: USB复位回调
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void USBD_CDC1_ACM_Reset(void)
- {
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_SetLineCoding
- * 功能说明: USB改变会话回调
- * 形 参: line_coding
- * 返 回 值: 无
- *********************************************************************************************************
- */
- bool USBD_CDC1_ACM_SetLineCoding(const CDC_LINE_CODING *line_coding)
- {
- /*储存发过来的设定*/
- cdc_acm_line_coding = *line_coding;
- return true;
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_GetLineCoding
- * 功能说明: USB会话状态查询回调
- * 形 参: line_coding
- * 返 回 值: 无
- *********************************************************************************************************
- */
- bool USBD_CDC1_ACM_GetLineCoding(CDC_LINE_CODING *line_coding)
- {
- /*发送储存的设定*/
- *line_coding = cdc_acm_line_coding;
- return true;
- }
- /*
- *********************************************************************************************************
- * 函 数 名: USBD_CDC1_ACM_SetControlLineState
- * 功能说明: USB设置控制线状态
- * 形 参: state
- * 返 回 值: 无
- *********************************************************************************************************
- */
- bool USBD_CDC1_ACM_SetControlLineState(uint16_t state)
- {
- /*这里可以添加自己的代码*/
- (void)(state);
- return true;
- }
- /***************************** EMB310 (END OF FILE) *********************************/
复制代码 代码附在这里
|
|