首页 > 其他分享 >STM32 虚拟串口发不出数据

STM32 虚拟串口发不出数据

时间:2024-08-10 11:27:03浏览次数:18  
标签:发不出 CDC uint8 STM32 hUsbDeviceFS USBD BUSY result 串口

在某个项目上,使用到了USB虚拟串口功能,芯片是STM32F105,在芯片刚复位时功能是正常,但是多发几次数据后,就发不出去了,一直返回USBD_BUSY,在下图中的344行返回USBD_BUSY

解决办法是在这个函数内增加一些代码,等待数据发送完成之后再退出,或者超时退出,超时时间可以自己调整,根据自己的使用的波特率和发送的数据长度去算需要多久才能发完

uint8_t CDC_Transmit_FS(uint8_t* Buf, uint16_t Len)
{
  uint8_t result = USBD_OK;
  /* USER CODE BEGIN 7 */
  uint32_t timeout = HAL_GetTick();
  USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
  if (hcdc->TxState != 0){
    return USBD_BUSY;
  }
  USBD_CDC_SetTxBuffer(&hUsbDeviceFS, Buf, Len);
  result = USBD_CDC_TransmitPacket(&hUsbDeviceFS);
	
  //等待发送完成
  while(hcdc->TxState)
  {
    if(HAL_GetTick() - timeout > 4)
    {
      result = USBD_BUSY;
      break;
    }
  }
  /* USER CODE END 7 */
  return result;
}

标签:发不出,CDC,uint8,STM32,hUsbDeviceFS,USBD,BUSY,result,串口
From: https://blog.csdn.net/weixin_48607260/article/details/141085724

相关文章

  • proteus 中单片机串口仿真实验
    位置:                    连线如图:问题解决在进行仿真的时候,可能不会出现terminal显示框,可以在菜单栏debug->virtualterminal来让它显示:如果visualterminal显示的是乱码,我们就需要根据实际情况修改单片机时钟频率,双击单片机,在......
  • 基于STM32设计的智能家居系统(采用OneNet云平台)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)基于STM32设计的智能家居系统(采用OneNet云平台)1.介绍基于STM32微控制器和......
  • 从STM32CubeMX导入项目到Embedded Studio。(原文题目:Import projects from STM32CubeM
    原文链接https://wiki.segger.com/Import_projects_from_STM32CubeMX_to_Embedded_Studio原文来自于SEGGER的wiki,题目是ImportprojectsfromSTM32CubeMXtoEmbeddedStudio原文最后编辑于2022/2/21.摘要:CubeMX生成项目,导入到EmbeddedStudio,并添加必要的文件软件:STM32C......
  • 【STM32】IO口取反 | 寄存器方式 | 异或运算符 | 原理
    目录STM32IO口取反|寄存器方式|异或运算符|原理1.引言2.GPIO基础知识2.1GPIO概述2.2STM32的GPIO架构2.3GPIO寄存器简介3.GPIO引脚取反原理3.1寄存器操作实现取反3.2异或运算符的应用4.示例代码4.1基础示例:LED闪烁4.2应用实例:继电器控制5.GPIO引脚......
  • STM32之SPI
    ADI对SPI的介绍1.硬件结构普通并联结构(使用片选信号CS或者NSS选通芯片)菊花链结构(部分芯片支持)2.通讯方式(四种)3.通信速率......
  • STM32CubleMX创建FreeRtos工程教程,图文教程
        前言:STM32CubeMX是一个开发工具,它已经将FreeRTOS这个实时操作系统(RTOS)集成到其工具中。换句话说,通过STM32CubeMX,可以非常方便地为STM32微控制器生成配置代码,其中包括对FreeRTOS的支持。    而本篇就是使用STM32CubleMX,生成支持FreeRtos的图文教程......
  • 基于STM32开发的智能灌溉系统
    目录引言环境准备工作硬件准备软件安装与配置系统设计系统架构硬件连接代码实现初始化代码控制代码应用场景农业灌溉园艺灌溉常见问题及解决方案常见问题解决方案结论1.引言智能灌溉系统通过监测土壤湿度和环境条件,自动控制水泵和阀门,实现精确灌溉,从而......
  • 基于STM32开发的智能门禁系统
    目录引言环境准备工作硬件准备软件安装与配置系统设计系统架构硬件连接代码实现初始化代码控制代码应用场景公司门禁管理家庭门禁管理常见问题及解决方案常见问题解决方案结论1.引言智能门禁系统通过RFID卡或密码输入的方式,实现对门禁的智能控制和管理......
  • 1392、STM32单片机温湿度检测阈值报警4个继电器加4个负载风扇等无线蓝牙远程(程序+原
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择显示器选择方案一、设计功能二、实物图三、原理图四、程序源码五、PCB图资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选......
  • STM32之IIC协议
    物理层 1.从机数量选择地址限制:IIC协议本身没有严格规定总线上device最大数目,从理论上看,IIC能挂的device数目取决于能表示的最大地址空间,在7位地址模式下,减去0x00地址不可用,理论上可以挂2^7-1=127个设备。总线电容限制:由于器件的管脚都是有输入电容的,PCB上......