假如在PC一侧的虚拟串口执行RTS的设定操作,在STM32一侧可以有代码响应这个操作吗?我在Demo中寻找了一下,未果。
有同行知道代码的何处可以响应这个操作?
Thanks
由于USB协议本身就带了流控,所以不像UART一样需要额外的流控引脚。
所以在USB虚拟串口的代码中,不需要处理RTS之类的信号。
问题是我需要将一个虚拟串口通过STM32的UART输出,这个UART的RTS线如何操作?
在 usb_prop.h 中有下面的描述,是不是和
Virtual_Com_Port_SetInterface 相关,在此这个操作被关闭掉了。
#define Virtual_Com_Port_GetConfiguration NOP_Process
//#define Virtual_Com_Port_SetConfiguration NOP_Process
#define Virtual_Com_Port_GetInterface NOP_Process
#define Virtual_Com_Port_SetInterface NOP_Process
#define Virtual_Com_Port_GetStatus NOP_Process
#define Virtual_Com_Port_ClearFeature NOP_Process
#define Virtual_Com_Port_SetEndPointFeature NOP_Process
#define Virtual_Com_Port_SetDeviceFeature NOP_Process
//#define Virtual_Com_Port_SetDeviceAddress NOP_Process
这个说明在例程里面,不需要对Virtual_Com_Port_SetInterface做任何操作,所以以NOP指令来完成set interface的操作,如果你要在set interface的时候做事情,就把这个define屏蔽掉,用你自己的代码来完成Virtual_Com_Port_SetInterface。
感谢楼上的回答
如果我在PC一侧置RTS=1, 那么STM32一侧的哪一个函数可以响应呢?
是不是下面的某一个呢?
是Virtual_Com_Port_SetInterface吗?
DEVICE_PROP Device_Property =
{
Virtual_Com_Port_init,
Virtual_Com_Port_Reset,
Virtual_Com_Port_Status_In,
Virtual_Com_Port_Status_Out,
Virtual_Com_Port_Data_Setup,
Virtual_Com_Port_NoData_Setup,
Virtual_Com_Port_Get_Interface_Setting,
Virtual_Com_Port_GetDeviceDescriptor,
Virtual_Com_Port_GetConfigDescriptor,
Virtual_Com_Port_GetStringDescriptor,
0,
0x40 /*MAX PACKET SIZE*/
};
USER_STANDARD_REQUESTS User_Standard_Requests =
{
Virtual_Com_Port_GetConfiguration,
Virtual_Com_Port_SetConfiguration,
Virtual_Com_Port_GetInterface,
Virtual_Com_Port_SetInterface,
Virtual_Com_Port_GetStatus,
Virtual_Com_Port_ClearFeature,
Virtual_Com_Port_SetEndPointFeature,
Virtual_Com_Port_SetDeviceFeature,
Virtual_Com_Port_SetDeviceAddress
};
又做了一个试验:
在PC机上打开虚拟串口後,做RTS=1/RTS=0 的操作,在STM32的USB代码部分设置一些断点观察,发现没有程序被触发,是不是可以认为,PC一端就屏蔽了这一类的操作?