stm32读取usb设备—真相揭秘,难怪

 admin   2024-02-05 12:07   24 人阅读  0 条评论

要实现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 复合设备相关内容,诸位记得订阅收藏本站。

本文地址:http://eptisonshop.com/post/36198.html
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?