资源简介
STM32 自定义HID 设备, 通过快传输接收上位机发来的数据。上位机使用Libusb库函数实现,接口简单。程序中添加了上位机接收数据的接口,USB 设备端的IN 接口也做好了,用户只要将需要发送给HOST的数据添加进去就可以了。博文地址: http://blog.csdn.net/chengwenyang/article/details/51039741

代码片段和文件信息
#include
#include
#include
#include
#include “libusb.h“
#define VID 0x8888
#define PID 0x0088
#define edp2in 0x82
#define edp2out 0x02
int main(void)
{
libusb_device **devs *dev;
int ret i;
ssize_t cnt;
usb_pro_t usb_pro;
struct libusb_device_handle *handle = NULL;
libusb_context *ctx = NULL;
ret = libusb_init(&ctx);
if (ret < 0)
return -1;
libusb_set_debug(ctx 3);
cnt = libusb_get_device_list(NULL &devs);
if (cnt < 0) {
printf(“no usb dev on bus\r\n“);
return -1;
}
i = 0;
while((dev = devs[i++]) != NULL) {
ret = libusb_get_device_descriptor(dev&desc);
if (ret < 0) {
printf(“failed to get device descriptor“);
goto error;
}
if ((desc.idVendor == VID) && (desc.idProduct == PID)) {
printf(“bLength: 0x%04x\r\n“ desc.bLength);
printf(“bDescriptorType: 0x%04x\r\n“ desc.bDescriptorType);
printf(“bcdUSB: 0x%04x\r\n“ desc.bcdUSB);
printf(“bDeviceClass: 0x%04x\r\n“ desc.bDeviceClass);
printf(“bDeviceSubClass: 0x%04x\r\n“ desc.bDeviceSubClass);
printf(“bDeviceProtocol: 0x%04x\r\n“ desc.bDeviceProtocol);
printf(“bMaxPacketSize0: 0x%04x\r\n“ desc.bMaxPacketSize0);
printf(“vendor id: 0x%04x\r\n“ desc.idVendor);
printf(“product id: 0x%04x\r\n“ desc.idProduct);
printf(“bcdDevice: 0x%04x\r\n“ desc.bcdDevice);
printf(“iManufacturer: 0x%04x\r\n“ desc.iManufacturer);
printf(“iProduct: 0x%04x\r\n“ desc.iProduct);
printf(“iSerialNumber: 0x%04x\r\n“ desc.iSerialNumber);
printf(“bNumConfigurations: 0x%04x\r\n“ desc.bNumConfigurations);
}
}
handle = libusb_open_device_with_vid_pid(ctx VID PID);
if (handle == NULL) {
printf(“cant‘t open device\r\n“);
goto error;
} else {
printf(“open device\r\n“);
}
libusb_free_device_list(devs 1);
if (libusb_kernel_driver_active(handle 0) ==1) {
printf(“kernel driver active detach it \r\n“);
if (libusb_detach_kernel_driver(handle 0) == 0) {
printf(“detached kernel driver\r\n“);
}
else {
goto error;
}
}
ret = libusb_claim_interface(handle 0);
if (ret < 0) {
printf(“can‘t claim interface\r\n“);
goto error;
} else {
printf(“claimed interface\r\n“);
}
char data[64];
int actual_len = 0;
int didi = 1000;
for (int i = 0; i< 1000; i++) {
memset(data 0 sizeof(data));
/* receive data from device */
/*
ret = libusb_bulk_transfer(handle edp2in data 64 &actual_len 0);
if (actual_len = 0) {
printf(“received nothing\r\n“);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-04-02 11:20 libsub_app\
文件 3584 2016-04-02 12:44 libsub_app\main.c
文件 469 2016-04-02 12:43 libsub_app\makefile
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\
文件 51511 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\CMSIS END USER LICENCE AGREEMENT.pdf
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Include\
文件 637870 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Include\stm32f10x.h
文件 2220 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Include\system_stm32f10x.h
文件 34574 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Release_Notes.html
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TASKING\
文件 3675 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TASKING\cstart_thumb2.asm
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\
文件 12739 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_cl.s
文件 12727 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_hd.s
文件 12374 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_hd_vl.s
文件 9961 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_ld.s
文件 10410 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_ld_vl.s
文件 10410 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_md.s
文件 10892 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_md_vl.s
文件 13387 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\TrueSTUDIO\startup_stm32f10x_xl.s
目录 0 2016-04-02 11:21 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\arm\
文件 15896 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\arm\startup_stm32f10x_cl.s
文件 15633 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\arm\startup_stm32f10x_hd.s
文件 15822 2012-03-22 22:44 stm32usb_bulk_transfer\Libraries\CMSIS\Device\ST\STM32F10x\Source\Templates\arm\startup_stm32f10x_hd_vl.s
............此处省略488个文件信息
相关资源
- STM32F103RC+ADC+DMA多通道采样LCD显示
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- STM32 led 时钟
- STM32 2.4G通信例程
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- usb hid调试工具
- HID调试助手
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32基于rt_thread操作系统的SDHC卡文件
- hidusage.h hidpi.h 等USB开发用头文件
- NRF24L01实现51与STM32双向通讯
- STM32F103 串口程序(完整版)
- stm32 ds18b20 温度传感器 测试通过
- stm32官方例程
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32定时器使用入门。看了这个程序会
- SIM908 SDIO FSMC STM32 FIFO
- STM32F103 CC2500完整驱动(模拟SPI)
- AD7606采集程序
- stm32 用SPI 方式读写 SDHC
评论
共有 条评论