三、打开hw_config.c文件,将那些没有的函数删除,只保留如下函数 a) Set_System(void) b) void Set_USBClock(void) c) void USB_Interrupts_Config(void) d) void USB_Cable_Config (FunctionalState NewState) 特别要注意最后一个函数,其主要作用是控制USB的上拉电阻,让电脑检测USB设备是否连接的。
四、打开stm32f10x_it.c文件,把EXTI15_10_IRQHandler等中断内的代码删除。 打开usb_prop.c文件,修改如下: void CustomHID_Reset(void) { /* Set Joystick_DEVICE as not configured */ pInformation->Current_Configuration = 0; pInformation->Current_Interface = 0;/*the default Interface*/ SetBTABLE(BTABLE_ADDRESS);
/* Initialize Endpoint 0 */ SetEPType(ENDP0, EP_CONTROL); SetEPTxStatus(ENDP0, EP_TX_STALL); SetEPRxAddr(ENDP0, ENDP0_RXADDR); SetEPTxAddr(ENDP0, ENDP0_TXADDR); Clear_Status_Out(ENDP0); SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); SetEPRxValid(ENDP0);
/* Initialize Endpoint 1 */ SetEPType(ENDP1, EP_INTERRUPT); SetEPTxAddr(ENDP1, ENDP1_TXADDR); SetEPTxCount(ENDP1, 64); SetEPRxStatus(ENDP1, EP_RX_DIS); SetEPTxStatus(ENDP1, EP_TX_NAK);
/* Initialize Endpoint 1 */ // SetEPType(ENDP1, EP_INTERRUPT); SetEPRxAddr(ENDP1, ENDP1_RXADDR); SetEPRxCount(ENDP1, 64); // SetEPTxStatus(ENDP1, EP_TX_DIS); SetEPRxStatus(ENDP1, EP_RX_VALID); /* Set this device to response on default address */ SetDeviceAddress(0); }
|