- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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
您可能关注的文档
最近下载
- 服务项目档案整理与管理方案.docx VIP
- 永川区2024-2025学年七年级上期期末数学试题.pdf VIP
- 小学一年级数学上册每课一练(全册打印版) .pdf VIP
- 永川区2024-2025(上)九年级物理试题 .pdf VIP
- 摩登家庭台词剧本第一季第一集中英双语左右对照.pdf VIP
- 2022-2023学年重庆市永川区八年级(上)期末数学试卷.doc VIP
- xxxx局文书档案整理及数字化项目实施方案(技术标 53页).doc VIP
- 水利水电工程合理使用年限及耐久性设计规范(SL 654-2014).pdf VIP
- 2024-2025学年重庆市永川区八年级(上)期末数学试卷(含解析).docx VIP
- 《汽车理论》全套课件 (余志生主编 第五版).ppt VIP
文档评论(0)