stm32读取usb设备—真相揭秘,难怪
要实现USB转串口功能,您需要与USB端口进行交互,以从微控制器的实际串口发送和接收数据。使用过USB虚拟串口的朋友可能知道,该功能在实现上还存在以下题
1电脑上设置的串口波特率不影响USB接口的波特率。
2、如何获取电脑串口助手设置的波特率来设置USART1,使波特率与串口匹配
助理同意了。
传输速度设置
事实上,STM32CubeMX生成的程序中已经提供了相关接口,用户只需要自己实现即可。打开usbd_cdc_ifc文件并将以下程序添加到CDC_Control_FS函数中。
以上描述是系统生成的,根据描述添加红框中对应的程序。LineCoding具有以下结构
USBD_CDC_LineCodingTypeDefLineCoding=;
USBD_CDC_LineCodingTypeDef的格式也是由系统定义的。
添加完成后,当计算机的串口支持改变波特率时,系统会调用该程序重新配置USART1的波特率,使两个波特率匹配。
剩下的功能就是数据传输,即通过USART1发送USB接收到的数据,将USART1接收到的数据发送到USB接口。
USB数据传递到USART1
它还修改了usbd_cdc_ifc文件中的USB接收函数CDC_Receive_FS。屏蔽原来的程序并添加通过串口发送的程序。
添加串口传输完成中断回调函数
voidHAL_UART_TxCpltCallbackUART_HandleTypeDefHuart
将USART1数据传输到USB
本例程通过中断方式接收USART1数据,并通过接收超间判断一帧数据接收完成。当然,转发也可以通过其他方式实现,例程只是实现功能。
添加串口中断回调函数
voidHAL_UART_RxCpltCallbackUART_HandleTypeDefhuartUR_Tick=0;//接收定时器清零UR_Flag=1;//HAL_UART_Receive_IThuartreceive,uint8_tUserTxBufferFS+UserTxBufPtrIn,1;
一旦确定已接收到数据帧,它就会通过USB接口传递。
ifUR_Flag==2
上述设置使我们能够在CH340等串行端口芯片上实现类似USB的功能。不过STM32的USB接口功能更强大,可以实现USB复合设备,比如同时虚拟多个串口。以后有时间我会多研究一下,分享给大家。
关联
提取码swyl
STM32开发板的USB功能包括
1.下载程序
2.调试代码
3、USB通讯
《STM32实例》以ALIENTEKMiniSTM32开发板为实验,结合28个具体实例,由浅入深一步步讲解STM32的各个外设。
本书附带的光盘包含所有实验的源代码和一些扩展示例,这些内容虽然书中没有涉及,但具有极好的参考价值,可以作为读者的补充参考材料。
书中附带的源代码有详细的中文注释,非常容易让读者理解,而且所有源代码都可以直接复制到电脑上编译下载查看实验结果,非常直观。
STC51是STC推出的一款以MCS-51为核心的微控制器。它与AT89C51基本相同,但可以直接通过串口编程,使其应用广泛。
MCS-51是典型的入门级MCU,其特点是简单,使其广泛用于教育目的。然而,由于这是20世纪70年代的芯片,目前设计和资源都严重缺乏。
STM32是意法半导体-STandCo.Ltd.发布的基于ARM最新一代Cortex-M内核的芯片,因其超高的性价比和简单的函数库编程方式而被广泛应用。
STM32系列集成了几乎所有工业控制应用的功能模块,包括USB、网络、SD卡、AD、DA等。主频72M。
今天stm32读取usb设备的这类话题的讲解就到此为止,如果还想了解更多的stm32 usb 复合设备相关内容,诸位记得订阅收藏本站。
发表评论