|
STM32F103的的USB例子采用的是官方库文件,其中每隔5秒忘USB发送一次数据,数据长度9个字节, 目前问题如下: 测试虚拟串口发送助手采用的串口助手,当串口助手关闭1分钟再打开,串口助手会收到两条数据,第一条就是上一5秒的数据,发送数据前做了缓存区清空操作,为什么会有两条数据同时发出? 串口助手正常打开则收数据是正常 QUEUE_PacketCreate(&m_QueueUsbComTx, m_UsbComTxBuf, sizeof(m_UsbComTxBuf)); 此函数是每次发送前都调用,相当于清空缓冲区 函数USB_TxWrite为往发送缓存区填充数据,具体函数操作如下: uint32_t USB_TxWrite(uint8_t *buffter, uint32_t writeLen) { return QUEUE_PacketIn(&m_QueueUsbComTx, buffter, writeLen); } 函数USB_TxBuff();为启动USB发送,具体函数如下: void USB_TxBuff(void){ uint8_t len=1; // USB_TxBufflen(); while(len){ len = USB_TxRead(txBuffter, sizeof(txBuffter)); // EP1_IN_flg++; if (len > 0) { // printf("\r\nUSB_TxRead len=%u",len); UserToPMABufferCopy(txBuffter, ENDP1_TXADDR, len); SetEPTxCount(ENDP1, len); SetEPTxValid(ENDP1); FrameCount = 0; } else { len=0; txFlg = 0; } } } 函数USB_TxRead为从缓存区取数据,经串口调试数据每次是9个,和每次发送的一致,为什么串口助手打开会接收两条数据? 谢谢! |
询问电源纹波对芯片的影响
STM32F103C8T6 上电后无法通过串口发出数据的问题?
VL53L5CX无法使用
stm32f107裸机+HR911105A+lwIP 1.31 SYN发送失败的问题
MCU的ADC进行电压采集时,外部输入阻抗最大能到多少?
STM32F103C8T6如何将变量定义到指定地址
STM32F103 做的USB CDC 串口调试助手打不开
DSP傅里叶变换如何在f103CBT6上使用
在 STM32CubeIDE 中正确设置 STM32F103C8T6 的 Flash 容量
咨询下,新项目打算用STM32F103的USB与工控机或PAD进行通讯,问题如下
微信公众号
手机版
在 STM32 设备端的 USB CDC 类请求处理代码中,会接收并处理主机发来的 SET_CONTROL_LINE_STATE 请求。
根据该请求中的 DTR 状态,可以判断 PC 端串口助手当前是打开还是关闭。
当 DTR=1 时,可认为串口助手已打开;当 DTR=0 时,可认为串口助手已关闭,此时设备端就不应继续发送数据。