发布 HPW421 V1.3 GPIO5 单继电器固件

This commit is contained in:
2026-07-17 12:07:19 +08:00
parent 98f2bdeda7
commit 21a44c759d
13 changed files with 33 additions and 88 deletions
@@ -42,7 +42,7 @@ uint8_t adress_ch2_index = 0; // 通道2地址索引(0-4)
uint8_t match_ch = 0; // 匹配到的通道(1=GPIO52=GPIO2
#define MATCH_CH1 (1 << 0) // 通道1匹配标记
#define MATCH_CH1 0 // HPW421 不使用通道1
#define MATCH_CH2 (1 << 1) // 通道2匹配标记
@@ -94,29 +94,18 @@ void chx_gpio_init(void)
GPIO_InitCfg.Dir = GPIO_DIR_OUTPUT; // 输出方向
GPIO_InitCfg.Int = NOT_INT; // 不使能中断
GPIO_InitCfg.Pin = RELAY_CH1_PIN; // 设置通道5引脚
xc_gpio_init(&GPIO_InitCfg); // 初始化GPIO
GPIO_InitCfg.Dir = GPIO_DIR_OUTPUT; // 输出方向
GPIO_InitCfg.Int = NOT_INT; // 不使能中断
GPIO_InitCfg.Pin = RELAY_CH2_PIN; // 设置通道2引脚
xc_gpio_init(&GPIO_InitCfg); // 初始化GPIO
if(flash_ch1_state==1)
{
xc_gpio_write_pin(GPIO_5,GPIO_PIN_SET);
}
else
{
xc_gpio_write_pin(GPIO_5,GPIO_PIN_RESET);
}
if(flash_ch2_state==1)
{
xc_gpio_write_pin(GPIO_2,GPIO_PIN_SET);
xc_gpio_write_pin(RELAY_CH2_PIN,GPIO_PIN_SET);
}
else
{
xc_gpio_write_pin(GPIO_2,GPIO_PIN_RESET);
xc_gpio_write_pin(RELAY_CH2_PIN,GPIO_PIN_RESET);
}
}
@@ -154,7 +143,7 @@ void app_key_callback_handler(uint16_t key_value) //按键回调函数
case MODE_DOUBLE_CLICK: //双击
key_state=KEY_SHORT;
power=4;
power=3;
led_state=2;
break;
@@ -181,7 +170,7 @@ void ble_mode_scan(void)
case 1:
receive_mode=0;
key_state=KEY_SHORT;
power=4;
power=3;
led_state=2;
break;
@@ -214,54 +203,31 @@ void _433_fun(void)
{
case 0x03: //如果是3键遥控或者是正方形白色遥控
if(match_ch & MATCH_CH2){
xc_gpio_toggle_pin(GPIO_2);
flash_ch2_state=xc_gpio_read_pin(GPIO_2);
xc_gpio_toggle_pin(RELAY_CH2_PIN);
flash_ch2_state=xc_gpio_read_pin(RELAY_CH2_PIN);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
if(match_ch & MATCH_CH1){
xc_gpio_toggle_pin(GPIO_5);
flash_ch1_state=xc_gpio_read_pin(GPIO_5);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
break;
case 0x04: //如果是黑色长方形遥控或者椭圆遥控关闭按键
if(match_ch & MATCH_CH2)
{
xc_gpio_write_pin(GPIO_2,GPIO_PIN_RESET);
flash_ch2_state=xc_gpio_read_pin(GPIO_2);
xc_gpio_write_pin(RELAY_CH2_PIN,GPIO_PIN_RESET);
flash_ch2_state=xc_gpio_read_pin(RELAY_CH2_PIN);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
if(match_ch & MATCH_CH1)
{
xc_gpio_write_pin(GPIO_5,GPIO_PIN_RESET);
flash_ch1_state=xc_gpio_read_pin(GPIO_5);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
break;
case 0x02: //如果是黑色长方形遥控或者椭圆遥控打开按键
if(match_ch & MATCH_CH2)
{
xc_gpio_write_pin(GPIO_2,GPIO_PIN_SET);
flash_ch2_state=xc_gpio_read_pin(GPIO_2);
xc_gpio_write_pin(RELAY_CH2_PIN,GPIO_PIN_SET);
flash_ch2_state=xc_gpio_read_pin(RELAY_CH2_PIN);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
if(match_ch & MATCH_CH1)
{
xc_gpio_write_pin(GPIO_5,GPIO_PIN_SET);
flash_ch1_state=xc_gpio_read_pin(GPIO_5);
ble_state_mark_dirty(BLE_STATE_DIRTY_OUTPUT | BLE_STATE_DIRTY_RF433);
}
break;
@@ -286,9 +252,6 @@ void scan_433(void)
if(rf433_sw_flag==1)
{
rf433_sw_flag=0;
power=4;
key_state=KEY_SHORT;
led_state=2;
}
else if(rf433_sw_flag==2)
{
@@ -436,6 +399,3 @@ void scan_433(void)
}
}