diff --git a/mihome_bridge/Core/Inc/main.h b/mihome_bridge/Core/Inc/main.h
index a7f6367..3976d6b 100644
--- a/mihome_bridge/Core/Inc/main.h
+++ b/mihome_bridge/Core/Inc/main.h
@@ -59,24 +59,18 @@ void Error_Handler(void);
/* Private defines -----------------------------------------------------------*/
#define BSP_KEY_IN_OUT_INTERAEL_MS 10
#define BSP_KEY_IN_OUT_TIM htim6
-#define KEY_OUT8_Pin GPIO_PIN_0
-#define KEY_OUT8_GPIO_Port GPIOA
-#define KEY_OUT7_Pin GPIO_PIN_1
-#define KEY_OUT7_GPIO_Port GPIOA
#define KEY_OUT6_Pin GPIO_PIN_2
#define KEY_OUT6_GPIO_Port GPIOA
#define KEY_OUT5_Pin GPIO_PIN_3
#define KEY_OUT5_GPIO_Port GPIOA
-#define KEY_OUT1_Pin GPIO_PIN_4
-#define KEY_OUT1_GPIO_Port GPIOA
-#define KEY_OUT2_Pin GPIO_PIN_5
-#define KEY_OUT2_GPIO_Port GPIOA
-#define KEY_OUT3_Pin GPIO_PIN_6
-#define KEY_OUT3_GPIO_Port GPIOA
-#define KEY_OUT4_Pin GPIO_PIN_7
-#define KEY_OUT4_GPIO_Port GPIOA
-#define PIR_Pin GPIO_PIN_8
-#define PIR_GPIO_Port GPIOA
+#define KEY_OUT7_Pin GPIO_PIN_4
+#define KEY_OUT7_GPIO_Port GPIOA
+#define KEY_OUT8_Pin GPIO_PIN_5
+#define KEY_OUT8_GPIO_Port GPIOA
+#define LED_STAT_Pin GPIO_PIN_12
+#define LED_STAT_GPIO_Port GPIOB
+#define LED_PWR_Pin GPIO_PIN_14
+#define LED_PWR_GPIO_Port GPIOB
#define KEY_IN4_Pin GPIO_PIN_15
#define KEY_IN4_GPIO_Port GPIOA
#define KEY_IN3_Pin GPIO_PIN_3
@@ -85,6 +79,14 @@ void Error_Handler(void);
#define KEY_IN2_GPIO_Port GPIOB
#define KEY_IN1_Pin GPIO_PIN_5
#define KEY_IN1_GPIO_Port GPIOB
+#define KEY_OUT4_Pin GPIO_PIN_6
+#define KEY_OUT4_GPIO_Port GPIOB
+#define KEY_OUT3_Pin GPIO_PIN_7
+#define KEY_OUT3_GPIO_Port GPIOB
+#define KEY_OUT2_Pin GPIO_PIN_8
+#define KEY_OUT2_GPIO_Port GPIOB
+#define KEY_OUT1_Pin GPIO_PIN_9
+#define KEY_OUT1_GPIO_Port GPIOB
/* USER CODE BEGIN Private defines */
diff --git a/mihome_bridge/Core/Src/hid_keyboard_mouse.c b/mihome_bridge/Core/Src/hid_keyboard_mouse.c
index b9d7618..12a3d88 100644
--- a/mihome_bridge/Core/Src/hid_keyboard_mouse.c
+++ b/mihome_bridge/Core/Src/hid_keyboard_mouse.c
@@ -233,6 +233,7 @@ static void usbd_event_handler(uint8_t busid, uint8_t event)
break;
case USBD_EVENT_CONFIGURED:
hid_km_state = HID_STATE_IDLE;
+ HAL_GPIO_WritePin(LED_STAT_GPIO_Port, LED_STAT_Pin, GPIO_PIN_SET);
break;
case USBD_EVENT_SET_REMOTE_WAKEUP:
break;
diff --git a/mihome_bridge/Core/Src/main.c b/mihome_bridge/Core/Src/main.c
index 5123d34..f7516a2 100644
--- a/mihome_bridge/Core/Src/main.c
+++ b/mihome_bridge/Core/Src/main.c
@@ -123,8 +123,10 @@ int main(void)
if (key != bsp_key_none) { //有按键按下
if (event == bsp_key_event_long) { //按下超时
+ HAL_GPIO_WritePin(LED_STAT_GPIO_Port, LED_STAT_Pin, GPIO_PIN_SET);
bsp_key_out_set_event(key, bsp_key_event_press); //输出对应按键的短按事件 将该按键恢复至未触发状态
} else { //按下边沿
+ HAL_GPIO_WritePin(LED_STAT_GPIO_Port, LED_STAT_Pin, GPIO_PIN_RESET);
if (key == bsp_key1) { //触发USB键盘按键
hid_consumer_control_key_send(0, HID_CONSUMER_USAGE_PLAYPAUSE); //暂停/继续播放
hid_consumer_control_key_send(0, 0); //抬起
@@ -283,25 +285,33 @@ static void MX_GPIO_Init(void)
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(GPIOA, KEY_OUT8_Pin|KEY_OUT7_Pin|KEY_OUT6_Pin|KEY_OUT5_Pin
- |KEY_OUT1_Pin|KEY_OUT2_Pin|KEY_OUT3_Pin|KEY_OUT4_Pin
- |PIR_Pin, GPIO_PIN_SET);
+ HAL_GPIO_WritePin(GPIOA, KEY_OUT6_Pin|KEY_OUT5_Pin|KEY_OUT7_Pin|KEY_OUT8_Pin, GPIO_PIN_SET);
- /*Configure GPIO pins : KEY_OUT8_Pin KEY_OUT7_Pin KEY_OUT6_Pin KEY_OUT5_Pin
- KEY_OUT1_Pin KEY_OUT2_Pin KEY_OUT3_Pin KEY_OUT4_Pin */
- GPIO_InitStruct.Pin = KEY_OUT8_Pin|KEY_OUT7_Pin|KEY_OUT6_Pin|KEY_OUT5_Pin
- |KEY_OUT1_Pin|KEY_OUT2_Pin|KEY_OUT3_Pin|KEY_OUT4_Pin;
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(LED_STAT_GPIO_Port, LED_STAT_Pin, GPIO_PIN_RESET);
+
+ /*Configure GPIO pin Output Level */
+ HAL_GPIO_WritePin(GPIOB, KEY_OUT4_Pin|KEY_OUT3_Pin|KEY_OUT2_Pin|KEY_OUT1_Pin, GPIO_PIN_SET);
+
+ /*Configure GPIO pins : KEY_OUT6_Pin KEY_OUT5_Pin KEY_OUT7_Pin KEY_OUT8_Pin */
+ GPIO_InitStruct.Pin = KEY_OUT6_Pin|KEY_OUT5_Pin|KEY_OUT7_Pin|KEY_OUT8_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- /*Configure GPIO pin : PIR_Pin */
- GPIO_InitStruct.Pin = PIR_Pin;
+ /*Configure GPIO pin : LED_STAT_Pin */
+ GPIO_InitStruct.Pin = LED_STAT_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(PIR_GPIO_Port, &GPIO_InitStruct);
+ HAL_GPIO_Init(LED_STAT_GPIO_Port, &GPIO_InitStruct);
+
+ /*Configure GPIO pin : LED_PWR_Pin */
+ GPIO_InitStruct.Pin = LED_PWR_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+ HAL_GPIO_Init(LED_PWR_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : KEY_IN4_Pin */
GPIO_InitStruct.Pin = KEY_IN4_Pin;
@@ -315,6 +325,13 @@ static void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+ /*Configure GPIO pins : KEY_OUT4_Pin KEY_OUT3_Pin KEY_OUT2_Pin KEY_OUT1_Pin */
+ GPIO_InitStruct.Pin = KEY_OUT4_Pin|KEY_OUT3_Pin|KEY_OUT2_Pin|KEY_OUT1_Pin;
+ GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
+ GPIO_InitStruct.Pull = GPIO_NOPULL;
+ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
+
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
diff --git a/mihome_bridge/MDK-ARM/mihome_bridge.uvprojx b/mihome_bridge/MDK-ARM/mihome_bridge.uvprojx
index 4160b08..c5067f0 100644
--- a/mihome_bridge/MDK-ARM/mihome_bridge.uvprojx
+++ b/mihome_bridge/MDK-ARM/mihome_bridge.uvprojx
@@ -403,6 +403,11 @@
1
..\Core\Src\bsp_key_in_out.c
+
+ hid_keyboard_mouse.c
+ 1
+ ..\Core\Src\hid_keyboard_mouse.c
+
main.c
1
@@ -418,11 +423,6 @@
1
../Core/Src/stm32f0xx_hal_msp.c
-
- hid_keyboard_mouse.c
- 1
- ..\Core\Src\hid_keyboard_mouse.c
-
diff --git a/mihome_bridge/mihome_bridge.ioc b/mihome_bridge/mihome_bridge.ioc
index c88a0b2..a90de3b 100644
--- a/mihome_bridge/mihome_bridge.ioc
+++ b/mihome_bridge/mihome_bridge.ioc
@@ -17,28 +17,29 @@ Mcu.Name=STM32F072C(8-B)Tx
Mcu.Package=LQFP48
Mcu.Pin0=PF0-OSC_IN
Mcu.Pin1=PF1-OSC_OUT
-Mcu.Pin10=PA8
-Mcu.Pin11=PA9
-Mcu.Pin12=PA10
-Mcu.Pin13=PA11
-Mcu.Pin14=PA12
-Mcu.Pin15=PA13
-Mcu.Pin16=PA14
-Mcu.Pin17=PA15
-Mcu.Pin18=PB3
-Mcu.Pin19=PB4
-Mcu.Pin2=PA0
-Mcu.Pin20=PB5
-Mcu.Pin21=VP_SYS_VS_Systick
-Mcu.Pin22=VP_TIM6_VS_ClockSourceINT
-Mcu.Pin3=PA1
-Mcu.Pin4=PA2
-Mcu.Pin5=PA3
-Mcu.Pin6=PA4
-Mcu.Pin7=PA5
-Mcu.Pin8=PA6
-Mcu.Pin9=PA7
-Mcu.PinsNb=23
+Mcu.Pin10=PA11
+Mcu.Pin11=PA12
+Mcu.Pin12=PA13
+Mcu.Pin13=PA14
+Mcu.Pin14=PA15
+Mcu.Pin15=PB3
+Mcu.Pin16=PB4
+Mcu.Pin17=PB5
+Mcu.Pin18=PB6
+Mcu.Pin19=PB7
+Mcu.Pin2=PA2
+Mcu.Pin20=PB8
+Mcu.Pin21=PB9
+Mcu.Pin22=VP_SYS_VS_Systick
+Mcu.Pin23=VP_TIM6_VS_ClockSourceINT
+Mcu.Pin3=PA3
+Mcu.Pin4=PA4
+Mcu.Pin5=PA5
+Mcu.Pin6=PB12
+Mcu.Pin7=PB14
+Mcu.Pin8=PA9
+Mcu.Pin9=PA10
+Mcu.PinsNb=24
Mcu.ThirdPartyNb=0
Mcu.UserConstants=BSP_KEY_IN_OUT_INTERAEL_MS,10;BSP_KEY_IN_OUT_TIM,$$_TIM6_IP_HANDLE_$$
Mcu.UserName=STM32F072C8Tx
@@ -51,22 +52,6 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
NVIC.SysTick_IRQn=true\:3\:0\:false\:false\:true\:false\:true\:false
NVIC.TIM6_DAC_IRQn=true\:1\:0\:true\:false\:true\:true\:true\:true
-PA0.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA0.GPIO_Label=KEY_OUT8
-PA0.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA0.GPIO_PuPd=GPIO_PULLUP
-PA0.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA0.Locked=true
-PA0.PinState=GPIO_PIN_SET
-PA0.Signal=GPIO_Output
-PA1.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA1.GPIO_Label=KEY_OUT7
-PA1.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA1.GPIO_PuPd=GPIO_PULLUP
-PA1.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA1.Locked=true
-PA1.PinState=GPIO_PIN_SET
-PA1.Signal=GPIO_Output
PA10.Locked=true
PA10.Mode=Asynchronous
PA10.Signal=USART1_RX
@@ -89,7 +74,7 @@ PA15.Signal=GPIO_Input
PA2.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
PA2.GPIO_Label=KEY_OUT6
PA2.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA2.GPIO_PuPd=GPIO_PULLUP
+PA2.GPIO_PuPd=GPIO_NOPULL
PA2.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA2.Locked=true
PA2.PinState=GPIO_PIN_SET
@@ -97,52 +82,39 @@ PA2.Signal=GPIO_Output
PA3.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
PA3.GPIO_Label=KEY_OUT5
PA3.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA3.GPIO_PuPd=GPIO_PULLUP
+PA3.GPIO_PuPd=GPIO_NOPULL
PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA3.Locked=true
PA3.PinState=GPIO_PIN_SET
PA3.Signal=GPIO_Output
PA4.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA4.GPIO_Label=KEY_OUT1
+PA4.GPIO_Label=KEY_OUT7
PA4.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA4.GPIO_PuPd=GPIO_PULLUP
+PA4.GPIO_PuPd=GPIO_NOPULL
PA4.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA4.Locked=true
PA4.PinState=GPIO_PIN_SET
PA4.Signal=GPIO_Output
PA5.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA5.GPIO_Label=KEY_OUT2
+PA5.GPIO_Label=KEY_OUT8
PA5.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA5.GPIO_PuPd=GPIO_PULLUP
+PA5.GPIO_PuPd=GPIO_NOPULL
PA5.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA5.Locked=true
PA5.PinState=GPIO_PIN_SET
PA5.Signal=GPIO_Output
-PA6.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA6.GPIO_Label=KEY_OUT3
-PA6.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA6.GPIO_PuPd=GPIO_PULLUP
-PA6.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA6.Locked=true
-PA6.PinState=GPIO_PIN_SET
-PA6.Signal=GPIO_Output
-PA7.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
-PA7.GPIO_Label=KEY_OUT4
-PA7.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
-PA7.GPIO_PuPd=GPIO_PULLUP
-PA7.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA7.Locked=true
-PA7.PinState=GPIO_PIN_SET
-PA7.Signal=GPIO_Output
-PA8.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
-PA8.GPIO_Label=PIR
-PA8.GPIO_Speed=GPIO_SPEED_FREQ_LOW
-PA8.Locked=true
-PA8.PinState=GPIO_PIN_SET
-PA8.Signal=GPIO_Output
PA9.Locked=true
PA9.Mode=Asynchronous
PA9.Signal=USART1_TX
+PB12.GPIOParameters=GPIO_Label
+PB12.GPIO_Label=LED_STAT
+PB12.Locked=true
+PB12.Signal=GPIO_Output
+PB14.GPIOParameters=GPIO_PuPd,GPIO_Label
+PB14.GPIO_Label=LED_PWR
+PB14.GPIO_PuPd=GPIO_PULLDOWN
+PB14.Locked=true
+PB14.Signal=GPIO_Input
PB3.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_Mode
PB3.GPIO_Label=KEY_IN3
PB3.GPIO_Mode=GPIO_MODE_INPUT
@@ -161,6 +133,38 @@ PB5.GPIO_Mode=GPIO_MODE_INPUT
PB5.GPIO_PuPd=GPIO_PULLUP
PB5.Locked=true
PB5.Signal=GPIO_Input
+PB6.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
+PB6.GPIO_Label=KEY_OUT4
+PB6.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
+PB6.GPIO_PuPd=GPIO_NOPULL
+PB6.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PB6.Locked=true
+PB6.PinState=GPIO_PIN_SET
+PB6.Signal=GPIO_Output
+PB7.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
+PB7.GPIO_Label=KEY_OUT3
+PB7.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
+PB7.GPIO_PuPd=GPIO_NOPULL
+PB7.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PB7.Locked=true
+PB7.PinState=GPIO_PIN_SET
+PB7.Signal=GPIO_Output
+PB8.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
+PB8.GPIO_Label=KEY_OUT2
+PB8.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
+PB8.GPIO_PuPd=GPIO_NOPULL
+PB8.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PB8.Locked=true
+PB8.PinState=GPIO_PIN_SET
+PB8.Signal=GPIO_Output
+PB9.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP
+PB9.GPIO_Label=KEY_OUT1
+PB9.GPIO_ModeDefaultOutputPP=GPIO_MODE_OUTPUT_OD
+PB9.GPIO_PuPd=GPIO_NOPULL
+PB9.GPIO_Speed=GPIO_SPEED_FREQ_LOW
+PB9.Locked=true
+PB9.PinState=GPIO_PIN_SET
+PB9.Signal=GPIO_Output
PF0-OSC_IN.Locked=true
PF0-OSC_IN.Signal=RCC_OSC_IN
PF1-OSC_OUT.Locked=true
@@ -180,7 +184,7 @@ ProjectManager.FreePins=false
ProjectManager.HalAssertFull=false
ProjectManager.HeapSize=0x0
ProjectManager.KeepUserCode=true
-ProjectManager.LastFirmware=true
+ProjectManager.LastFirmware=false
ProjectManager.LibraryCopy=1
ProjectManager.MainLocation=Core/Src
ProjectManager.NoMain=false