STM32F4中USB与PC双向通信

STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤:

1. 从http://www.stmcu.org/document/list/index/category-524下载所需要的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. 修改驱动文件,其中usb_hid_core.c位于STM32_USB-Host-Device_Lib—>Project—>USB_Device_Examples—>HID,即官方给的驱动。主要修改以下几个文件:usb_bsp.c(USB引脚初始化,可只需要两根数据引脚),usbd_desc.c(USB设备描述符,当然这个也可以不用修改,采用默认即可),usbd_usr.c(用于设备连接过程的信息显示),usbd_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. 修改了usbd_hid_core.c后,同时需要修改usbd_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可用于比较两个文件中的内容的不通,很实用

时间: 2024-10-07 03:15:07

STM32F4中USB与PC双向通信的相关文章

DFU工作过程中USB机制

在一级bootloader运行进入USB启动方式之后,设备进行枚举.枚举过程中会通过PC端发送命令对连接的USB设备进行枚举.当枚举成功之后,在PC端能够看到设备的盘符. 当设备能够被PC正确识别之后,接下来就可以通过烧写工具完成设备的扫描如果成功找到设备,则可以通过USB传输数据到SRAM中,这时候的数据主要包括2k infor文件.一级bootloader在成功的解析2kinfor 之后,PC端会将DFU文件传输到初始化好的DRAM中.并且PC指针跳转到DFU地址处执行,执行过程中会跳转到U

实测STM32F4中printf的效率问题

实测STM32F4中printf的效率问题 一直认为printf所做的工作就是格式化字符串,然后依次调用fputc函数发送出去.于是以前都认为printf函数的瓶颈是在fputc这里,是因为发送一个字节所占的时间太长,才导致printf效率慢.也就是说,一直认为如果串口的波特率设置成115200的话,printf至少也是能达到115200的波特率的. 而这几天在学习ucOS,于是想到,如果printf的瓶颈是在等在串口发送完成的话,那么我在等待串口发送完成中断的时候是不是挂起一个信号量,然后就可

win7中USB音箱没有声音解决的方法

Win7装好后,原来在XP中工作正常的USB小音箱却不工作了,重装了声卡驱动还是一样,后来通过下面尝试最终好用了. 1.右键右下角喇叭button. 2.点击"播放设备". 3.设定USB Audio Device为默认设备. 4.双击USB Audio Device. 5.在弹出的扬声器属性页面点击"增强功能". 6.选择"禁用全部增强功能". 7.点击"确认". win7中USB音箱没有声音解决的方法,布布扣,bubuko

android设备中USB转串口demo 下载

http://files.cnblogs.com/guobaPlayer/testUSB2Serial.apk USB转串口demo程序, 无需驱动,只要手机USB是OTG类型,插上我们的模块即可使用.当前波特率是9600bps 更多USB转GPIO,按键,PWM,红外,SPI,IIC,ADC,欢迎咨询,洽谈. 杭州蓝松科技,专注于android相关软硬件项目的方案开发工作,欢迎联系:qq1852600324" 公司网站:www.lansongtech.com android设备中USB转串口d

同一个局域网中用Windows自己的远程桌面远程局域网中的其他PC

同一个局域网中用Windows自己的远程桌面远程局域网中的其他PC... ===================== 建立Windows远程访问的前提: 1.访问PC和被访问的PC在同一个局域网中 2.Windows之间的远程-必须要给PC系统的账户设置一个密码 ==================== 开始测试远程访问: 打开远程桌面,输入要远程访问的PC的IP地址: ================== 开启远程桌面访问的权限,右键计算机-----属性: 点开:远程设置---然后勾选:允许远

JLINK坏了怎么办?VMware中USB无法识别?

一.关于JLINK 挂掉怎么处理,主要是要进行固件的恢复,步骤如下 (重要:要在XP系统下恢复,插上JLINK 之后,驱动要自己定位安装:C:\Program Files\ATMEL Corporation\AT91-ISP v1.13\sam-ba 2.9\drv ,先装完下面的软件才有): 按照“J-LINK V8 固件烧录指导”详细烧写步骤参考如下: J-LINK 是使用过程中,如果内部固件意外损坏或丢失,请参考下面操作步骤说明,重新烧录JLINK固件. 1. 安装固件烧录软件 请在ATM

中移动2014 PC服务器招标结果公示 洋品牌都去哪儿了?

大数据在线报道,中国移动于10月8日公示了其2014 PC服务器招标结果,公示中以华为.浪潮为代表的本土厂商大获全胜,而HP.Dell等洋品牌却是难觅踪影. 中国移动作为全球最大的电信运营商,对于IT设备的需求量巨大.据悉,中国移动本次PC服务器招标共分为五个标段,涵盖了从机架式服务器.刀片式服务器.MAS服务器.高端应用服务器和多节点服务器.华为和浪潮是本次招标的最大赢家,这两家本土厂商在五个标段中占据突出位置.中国移动采购与招标网上的具体公示如下: 随着国家对于信息安全的重视,以及国产化浪潮

Linux中USB无线网卡实现AP模式(hostapd交叉编译环境下)

以手机上WIFI热点为例,有4种常用的"认证/加密" a. open b. WEP c. WPA(TKIP) d. WPA2(AES) 需要用到的源代码有: hostapd-2.0.tar.gz,下载地址:点击这里! openssl-1.0.1d.tar.gz,下载地址:点击这里! dhcp-4.2.5-P1.tar.gz,下载地址:点击这里! 首先交叉编译dhcp-4.2.5-P1.tar.gz tar xzf dhcp-4.2.5-P1.tar.gz cd dhcp-4.2.5-P

在Ubuntu中USB连接手机调试

1.打开手机USB调试功能 显示“开发者选项”(开发者选项默认隐藏,一般需要进入到“设置”-->“关于手机”连续点击七次,可将“开发者选项显示出来”) 将“开发者选项”设置为“开启”状态 打开USB调试 2.将设备通过USB与电脑连接,使用"lsusb"命令查看该设备的vendor id和product id 3.切换到root用户并创建如下文件: /etc/udev/rules.d/51-android.rules 并添加如下内容: SUBSYSTEM=="usb&q