欢迎来到天天文库
浏览记录
ID:23623520
大小:407.19 KB
页数:35页
时间:2018-11-09
《虚拟串口例程详解.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、STM32USBVirtualCOMUSB转串口的功能实现2013-10-0722:27:09
2、分类:USB学习
3、标签:stm32usbvirtualcom
4、举报
5、字号订阅这次讲的是如何实现USB转串口功能的实现。首先看看工程的布局吧:我们主要要介绍的文件的在USB_User这个组文件。从上面的截图可以看到USB_User这个文件由hw_config.c、usb_desc.c、usb_endp.c、usb_istr.c、usb_prop.c、usb_pwr.c几个文件组成。其中usb_istr.c和usb_pwr.c整两
6、个文件不用修改,其他的文件都需要修改。下面接慢慢将来。首先讲讲hw_config.c这个文件。由于我们用到串口,所以这个文件需要添加串口相关代码。在这个文件的开始就需要定义一下串口的相关变量:uint8_tUSART_Rx_Buffer[USART_RX_DATA_SIZE];//串口接收缓冲uint32_tUSART_Rx_ptr_in=0;//这里采用的是一个环形缓冲,串口数据输入起始位置uint32_tUSART_Rx_ptr_out=0;//环形缓冲的数据结束位置uint32_tUSART_Rx_length=0
7、;//接收数据的长度uint8_tUSB_Tx_State=0;//USB发送标志,当串口缓冲有数据没有发送,该位置1这里开了一个2K的环形缓冲如下图所示:其中USART_Rx_ptr_in指向的就是图中readposition处,USART_Rx_ptr_out指向writeposition处,USART_Rx_length就是数据的长度,就是图中橙色的圆弧。当没有数据的时候,USART_Rx_ptr_in=USART_Rx_ptr_out,有数据收到的时候USART_Rx_ptr_in就向后偏移,当数据被读出去的时候
8、USART_Rx_ptr_out也会向后偏移。这里需要定义一个串口默认配置:波特率为9600,数据长度为8位,停止位为1位,奇校验,没有数据流控制,代码如下:/********************************************************************************FunctionName:USART_Config_Default.*Description:串口的默认配置值*Input:None.*Return:None.***********************
9、********************************************************/voidUSART_Config_Default(void){GPIO_InitTypeDefGPIO_InitStructure;/*使能UART2时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);/*配置USART2的Tx引脚类型为推挽式的*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_
10、InitStructure.GPIO_Pin=GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);/*配置USART2的Rx为输入悬空*/GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_Init(GPIOA,&GPIO_InitStructure
11、);/*串口默认配置*//*串口配置值如下:-波特率=9600baud-数据长度=8Bits-1位停止位-奇校验-不使能硬件流控制-接收传输使能*/USART_InitStructure.USART_BaudRate=9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;//8位数据位USART_InitStructure.USART_StopBits=USART_StopBits_1;//1位停止位USART_InitStructure.USART_
12、Parity=USART_Parity_Odd;//奇校验USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//没有数据流控制USART_InitStructure.USART_Mode=USART_Mode_Rx
此文档下载收益归作者所有