单片机学习小组
登录
直播中
梁宏满
7年用户
928经验值
私信
关注
如何利用STM32的USB实现通信?
开启该帖子的消息推送
HID
STMCU
如何利用
STM32
的USB实现
通信
?
回帖
(1)
倪梁靓
2022-2-21 13:43:28
STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤:
1. 先
下载所需要的USB_OTG主机和设备库;
2. 新建STM32工程,并把STM32_USB-Host-Device_Lib下的Libraries中的3个USB库放到工程文件中;
3.在Keil中建立USB相关文件夹,并加入相应的驱动文件:(可参考STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,指示官方给的HID例程是用按键作为鼠标与PC连接),建立好的工程文件如下图:
4. 修改驱动文件,其中u***_hid_core.c位于STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,即官方给的驱动。主要修改以下几个文件:u***_bsp.c(USB引脚初始化,可只需要两根数据引脚),u***d_desc.c(USB设备描述符,当然这个也可以不用修改,采用默认即可),u***d_usr.c(用于设备连接过程的信息显示),u***d_hid_core.c(此为重点修改文件,主要在USBD_HID_cb中添加USBD_HID_DataOut,USBD_HID_CfgDesc中添加HID_OUT_EP,修改HID_MOUSE_ReportDesc,USBD_HID_Init中添加DCD_EP_PrepareRx,并添加USBD_HID_DataOut函数)
5. 修改了u***d_hid_core.c后,同时需要修改u***d_hid_core.h中的USB_HID_CONFIG_DESC_SIZ等参数。注:HID_MOUSE_ReportDesc参数含义不是很清楚。
6. 添加USB FS中断服务函数
void OTG_FS_IRQHandler(void)
{
USBD_OTG_ISR_Handler(&USB_OTG_dev);
}
7. 完成上述部分内容后,便可实现STM32与PC机双向通信,发送函数调用USBD_HID_SendReport,接收函数调用USBD_HID_DataOut(数据存储在USBD_HID_DataOut一个字符数组中)。
附言:可以通过PortHelper调试助手完成USB调试,Beyond Compare可用于比较两个文件中的内容的不通,很实用
STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤:
1. 先
下载所需要的USB_OTG主机和设备库;
2. 新建STM32工程,并把STM32_USB-Host-Device_Lib下的Libraries中的3个USB库放到工程文件中;
3.在Keil中建立USB相关文件夹,并加入相应的驱动文件:(可参考STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,指示官方给的HID例程是用按键作为鼠标与PC连接),建立好的工程文件如下图:
4. 修改驱动文件,其中u***_hid_core.c位于STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,即官方给的驱动。主要修改以下几个文件:u***_bsp.c(USB引脚初始化,可只需要两根数据引脚),u***d_desc.c(USB设备描述符,当然这个也可以不用修改,采用默认即可),u***d_usr.c(用于设备连接过程的信息显示),u***d_hid_core.c(此为重点修改文件,主要在USBD_HID_cb中添加USBD_HID_DataOut,USBD_HID_CfgDesc中添加HID_OUT_EP,修改HID_MOUSE_ReportDesc,USBD_HID_Init中添加DCD_EP_PrepareRx,并添加USBD_HID_DataOut函数)
5. 修改了u***d_hid_core.c后,同时需要修改u***d_hid_core.h中的USB_HID_CONFIG_DESC_SIZ等参数。注:HID_MOUSE_ReportDesc参数含义不是很清楚。
6. 添加USB FS中断服务函数
void OTG_FS_IRQHandler(void)
{
USBD_OTG_ISR_Handler(&USB_OTG_dev);
}
7. 完成上述部分内容后,便可实现STM32与PC机双向通信,发送函数调用USBD_HID_SendReport,接收函数调用USBD_HID_DataOut(数据存储在USBD_HID_DataOut一个字符数组中)。
附言:可以通过PortHelper调试助手完成USB调试,Beyond Compare可用于比较两个文件中的内容的不通,很实用
举报
更多回帖
rotate(-90deg);
回复
相关问答
HID
STMCU
如何
利用
stm32
cubeMX配置
实现
简单的串口
通信
?
2021-12-08
717
如何
利用
STM32
中断模式
实现
点灯和串口
通信
?
2022-01-20
660
如何
利用
STM32
实现
点灯和串口
通信
?
2021-12-07
1194
stm32
usb
复合设备支持键盘鼠标和hid串口
通信
可以
实现
吗?
2024-05-24
174
如何
实现
USB
通信
?
2022-02-16
1974
stm32
USB
控制io口
实现
通信
可行吗
2019-01-04
3998
如何
利用
HAL
实现
USB
模拟U盘?
2022-02-22
550
如何
利用
STM32
软件SPI去
实现
NRF24L01
通信
呢
2021-12-16
1475
ZigBee和
STM32
之间串口
通信
怎么
实现
?
2020-08-13
3296
关于
stm32
u575芯片作为
usb
device和PC
实现
双向
通信
的疑问
2024-03-13
290
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分