From ffff597d415088762a089c32da73c46b46cb0ed8 Mon Sep 17 00:00:00 2001 From: wangyz1997 Date: Wed, 5 Jun 2024 00:19:50 +0800 Subject: [PATCH] mihome_bridge: adapt to latest pcb pinout --- mihome_bridge/Core/Inc/main.h | 30 +++-- mihome_bridge/Core/Src/hid_keyboard_mouse.c | 1 + mihome_bridge/Core/Src/main.c | 39 ++++-- mihome_bridge/MDK-ARM/mihome_bridge.uvprojx | 10 +- mihome_bridge/mihome_bridge.ioc | 138 ++++++++++---------- 5 files changed, 121 insertions(+), 97 deletions(-) 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