|
|
發表於 2013年1月20日 01:46 AM
|
顯示全部樓層
前陣子把DEVO10的電源線路零件全拆了又焊回去, 還好DEVO10沒燒毀!!
所以又可以改造了 ~
這幾天彙整一下程式碼再傳上.
=======================================
(2013/1/20)
devention DEVO10 , USB HID Joystick 程式碼更改彙集如下:
usb_joystick_src.zip
(22.95 KB, 下載次數: 130)
(1) stm32 USB FS source code
位於 /target/common_devo/msc2/
(2) stm32 USB FS Device Lib (rev 3.3.0) 程式庫
位於 /target/common_devo/msc2/lib/*.* , 程式碼皆未更改
(3) stm32 USB FS user code
位於 /target/common_devo/msc2/
(3.1) hw_config.c
增加 "void USB_Joystick_Send(void)", 將遙控器利用Joystick_Buffer[]傳到USB.
(3.2) usb_conf.h
變更 Buffer Description Table
啟用 EP3_IN_Callback
(3.3) usb_endp.c
增加 "void EP3_IN_Callback(void)", USB傳送完成,表示可以傳下一筆資料.
(3.4) usb_desc.c 及 usb_desc.h
USB Emulation(枚舉) 主要的資料結構定義於此,
自原有的MassStorage擴增Joystick, 全部變更 !!
(3.5) usb_prop.c 及 usb_desc.h
USB Emulation(枚舉) 主要的流程控制程序,
變更 :
"void MASS_Reset()"
RESULT MASS_Data_Setup(uint8_t RequestNo)
RESULT MASS_NoData_Setup(uint8_t RequestNo)
RESULT MASS_Get_Interface_Setting(uint8_t Interface, uint8_t AlternateSetting)
uint8_t *MASS_GetStringDescriptor(uint16_t Length)
增加 :
uint8_t *Joystick_GetReportDescriptor(uint16_t Length)
uint8_t *Joystick_GetHIDDescriptor(uint16_t Length)
增加(但USB Emulation(枚舉)過程未使用) :
RESULT Joystick_SetProtocol(void)
uint8_t *Joystick_GetProtocolValue(uint16_t Length)
=======================================
(4) 計算Joystick_Buffer[]
(4.1) 自(混控前的)raw[]計算後填入Joystick_Buffer[]
變更 : "static void MIXER_UpdateRawInputs()"
(5) 開啟USB
(5.1) 借用 usb_page.c
變更"static u8 _action_cb(u32 button, u8 flags, void *data)",
(5.2) 先按"DN" 開啟USB, 插入USB到PC, PC偵測到UBS MassStorage及HID(Joystick) 後等1秒(讓Joystick Reset完成) 再按"UP".
=======================================
(6) 3個狀態控制程序流程
(6.1) JoystickEn
由usb_prop.c程序設定,用來標示USB設置完成.
(6.2) PrevXferComplete
由EP3_IN_Callback程序設定,USB傳送完成,表示可以傳下一筆資料.
(6.3) JoystickBuff
由MIXER_UpdateRawInputs程序設定,Joystick_Buffer[]完成,表示可以啟用USB_Joystick_Send().
=======================================
[ 本帖最後由 hmjack2008 於 2013年1月20日 04:44 PM 編輯 ] |
|