虚拟串口例程详解.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM32 USB Virtual COM USB 转串口的功 能实现 2013-10-07 22:27:09| 分类:USB 学习| 标签:stm32 usb virtual com |举报|字号订阅 这次讲的是如何实现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 整两个文件不用修改,其他的文件都需要修改。下 面接慢慢将来。 首先讲讲hw_config.c 这个文件。由于我们用到串口,所以这个文件需要添 加串口相关代码。在这个文件的开始就需要定义一下串口的相关变量: uint8_t USART_Rx_Buffer [USART_RX_DATA_SIZE]; //串口接收缓冲 uint32_t USART_Rx_ptr_in = 0; //这里采用的是一个环形 缓冲,串口数据输入起始位置 uint32_t USART_Rx_ptr_out = 0; //环形缓冲的数据结束位 置 uint32_t USART_Rx_length = 0; //接收数据的长度 uint8_t USB_Tx_State = 0; //USB 发送标志,当串口缓 冲有数据没有发送,该位置1 这里开了一个2K 的环形缓冲如下图所示: 其中USART_Rx_ptr_in 指向的就是图中 read position 处,USART_Rx_ptr_out 指向write position 处, USART_Rx_length 就是数据的长度,就是图中橙色的圆弧。当没有数据的时 候,USART_Rx_ptr_in=USART_Rx_ptr_out,有数据收到的时候 USART_Rx_ptr_in 就向后偏移,当数据被读出去的时候USART_Rx_ptr_out 也会向后偏移。 这里需要定义一个串口默认配置:波特率为 9600,数据长度为8位,停止位为1位,奇校 验,没有数据流控制,代码如下: /******************************************************************** *********** * Function Name : USART_Config_Default. * Description : 串口的默认配置值 * Input : None. * Return : None. ********************************************************************* **********/ void USART_Config_Default (void) { GPIO_InitTypeDef GPIO_InitStructure ; /* 使能 UART2 时钟 */ RCC_APB1PeriphClockCmd (RCC_APB1Periph_USART2, ENABLE); /* 配置 USART2 的Tx 引脚类型为推挽式的 */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ; GPIO_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_FLOA

文档评论(0)

Ss*^_^* + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档