今天来记录一下这几天的学习成果–利用stm32cubeMx实现stm32f042f6p6实现usbhid双向通讯+win上位机,废话少说,直接上图: 1.首先下载并打开stm32cubeMx 2.新建项目 3.找到stm32f042f6px,再按ok 4.勾选如图上所示 5.把基本的配置开起来,其他没有展开的地方就让它默认就ok 6.继续 7.然后 8.再然后 9.配置生成文件 10.最后 11.此时可以打开工程啦! 12.编译 13.添加报文配置
__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc_FS[USBD_CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END = { /* USER CODE BEGIN 0 */ 0x06, 0xFF, 0x00, /* USAGE_PAGE (Vendor Page: 0xFF00) */ 0x09, 0x01, /* USAGE (Demo Kit) */ 0xa1, 0x01, /* COLLECTION (Application) */ /* 6 */ /* Receive */ 0x85, Receive_REPORT_ID, /* REPORT_ID (1) */ 0x09, 0x01, /* USAGE (LED 1) */ 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ 0x25, 0xff, /* LOGICAL_MAXIMUM (255) */ 0x75, 0x08, /* REPORT_SIZE (8) */ 0x95, Receive_REPORT_COUNT, /* REPORT_COUNT (1) */ 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ 0x85, Receive_REPORT_ID, /* REPORT_ID (1) */ 0x09, 0x01, /* USAGE (LED 1) */ 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */ /* 26 */ /* Send */ 0x85, Send_REPORT_ID, /* REPORT_ID */ 0x09, 0x07, /* USAGE (ADC IN) */ 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ 0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */ 0x75, 0x08, /* REPORT_SIZE (8) */ 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ 0x85, Send_REPORT_ID, /* REPORT_ID (7) */ 0x09, 0x07, /* USAGE (ADC in) */ 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ /* 45 */ /* USER CODE END 0 */ 0xC0 /* END_COLLECTION */ /* 46 */ #if 0 // /* key Push Button */ // 0x85, KEY_REPORT_ID, /* REPORT_ID (5) */ // 0x09, 0x05, /* USAGE (Push Button) */ // 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ // 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ // 0x75, 0x01, /* REPORT_SIZE (1) */ // 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */ // // 0x09, 0x05, /* USAGE (Push Button) */ // 0x75, 0x01, /* REPORT_SIZE (1) */ // 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */ // // 0x75, 0x07, /* REPORT_SIZE (7) */ // 0x81, 0x83, /* INPUT (Cnst,Var,Abs,Vol) */ // 0x85, KEY_REPORT_ID, /* REPORT_ID (2) */ // // 0x75, 0x07, /* REPORT_SIZE (7) */ // 0xb1, 0x83, /* FEATURE (Cnst,Var,Abs,Vol) */ // /* 114 */ #endif };14.更改数组大小 15.继续加
/* USER CODE BEGIN EXPORTED_VARIABLES */ #define Receive_REPORT_ID 0x01 #define Receive_REPORT_COUNT 0x01 #define Send_REPORT_ID 0x02 /* USER CODE END EXPORTED_VARIABLES *//* USER CODE BEGIN 6 */ char buffer[10]; switch(event_idx) { case Receive_REPORT_ID: //if receive data's ID==Receive_REPORT_ID sprintf(buffer,"%d",state); HAL_UART_Transmit(&huart2,(uint8_t *)buffer,1,0xffff); break; default: break; } return (0); /* USER CODE END 6 */ int main(void) { uint8_t sendbuffer[2]; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init(); MX_USB_DEVICE_Init(); sendbuffer[0]=Send_REPORT_ID; sendbuffer[1]=1; while (1) { USBD_CUSTOM_HID_SendReport(&hUsbDeviceFS,sendbuffer,2);//·¢ËÍ HAL_Delay(2000); } }
16.连好线 17.效果