fix:修改UDP通讯中,取电变化上报机制

1、问题点:当RCU网络状态异常的情况下,网络还处于协商状态下,还未进入正常通讯环节时,取电变化不会进行判断。这会导致取电变化上报与实际产生取电状态时间点对不上。
2、将BLV_C1F_Module代码上传至Gitea,之前代码修改记录请查看 .\BasicCode\Readme.txt
This commit is contained in:
caocong
2026-01-23 09:23:12 +08:00
commit 95916b9995
622 changed files with 1336094 additions and 0 deletions

134
BasicCode/Drive/KEY/key.h Normal file
View File

@@ -0,0 +1,134 @@
#ifndef KEY_H_
#define KEY_H_
#include "stdint.h"
#define KEY_TEST1_Status GPIOB_ReadPortPin(GPIO_Pin_20)
#define KEY_TEST2_Status GPIOB_ReadPortPin(GPIO_Pin_19)
#define KEY_TEST3_Status GPIOB_ReadPortPin(GPIO_Pin_18)
#define KEY_PRESS 0x00
#define KEY_LOOSEN 0x01
#define KEY_DELAY_COUNT 2
#define KEY_DELAY_COUNT_LONG 100
typedef enum
{
KEY_CH1,
KEY_CHN_MAX,
}KEY_CHN_e;
typedef enum
{
KEY_STA_S0 = 0,
KEY_STA_S1 = 1,
KEY_STA_S2 = 2,
}KEY_STA_e;
typedef enum
{
KEY_VAL_NOT, //û<><C3BB><EFBFBD><EFBFBD>
KEY_VAL_SHORT_PRESS, //<2F><><EFBFBD><EFBFBD>
KEY_VAL_CONT_LONG_PRESS, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KEY_VAL_SINGLE_LONG_PRESS, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KEY_VAL_LONG_PRESS_LOOSEN, //<2F><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
}KEY_VAL_e;
typedef struct
{
uint8_t KEY_STA[KEY_CHN_MAX];
uint8_t key_val[KEY_CHN_MAX]; //0:û<><C3BB><EFBFBD><EFBFBD>, 1:<3A>̰<EFBFBD><CCB0>ɿ<EFBFBD>, 2:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3:<3A><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
uint8_t key_longPress[KEY_CHN_MAX]; //0:û<><C3BB><EFBFBD><EFBFBD>, 1:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t key_time[KEY_CHN_MAX];
uint8_t delayCnt[KEY_CHN_MAX];
}KEY_t;
/****************<2A><><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD>*****************/
#define MultIO_OUTPUT 1
#define MultIO_INPUT 2
#define MultIO_Pin1 GPIO_Pin_11 //PB11
#define MultIO_Pin1_ModeCfg(x) { if(x == MultIO_OUTPUT){GPIOB_ModeCfg(MultIO_Pin1, GPIO_ModeOut_PP_20mA);}else if(x == MultIO_INPUT){GPIOB_ModeCfg(MultIO_Pin1, GPIO_ModeIN_PU);} }
#define MultIO_Pin1_H GPIOB_SetBits(MultIO_Pin1)
#define MultIO_Pin1_L GPIOB_ResetBits(MultIO_Pin1)
#define MultIO_Pin1_Read GPIOB_ReadPortPin(MultIO_Pin1) /* GPIOB<4F>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><CCAC>0-<2D><><EFBFBD>ŵ͵<C5B5>ƽ<EFBFBD><C6BD>(!0)-<2D><><EFBFBD>Ÿߵ<C5B8>ƽ */
/*******************************************/
#define MultIO_OutPut_Time 5
#define MultIO_InPut_Time 12
#define MultIO_InPut_ScanTime 5
#define MultIO_Pin_High 0x01
#define MultIO_Pin_Low 0x00
#define MultIO_Input_PRESS MultIO_Pin_Low
#define MultIO_Input_LOOSEN MultIO_Pin_High
#define MultIO_Input_DELAY_COUNT 20
#define MultIO_Input_DELAY_COUNT_LONG 600
typedef enum
{
MultIO_CH1,
MultIO_CHN_Max,
}MultIO_Pin_CH_e;
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD>*/
typedef enum
{
INPUT_NOT, //û<><C3BB><EFBFBD><EFBFBD>
INPUT_SHORT_PRESS, //<2F><><EFBFBD><EFBFBD>
INPUT_CONT_LONG_PRESS, //<2F><><EFBFBD><EFBFBD>
INPUT_SINGLE_LONG_PRESS, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
INPUT_LONG_PRESS_LOOSEN, //<2F><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
}MULTIO_INPUT_VAL_e;
typedef enum
{
INPUT_STA_S0 = 0,
INPUT_STA_S1 = 1,
INPUT_STA_S2 = 2,
}MULTIO_INPUT_STATE_e;
typedef enum
{
MultIO_IDLE,
MultIO_Input_Mode,
MultIO_Output_Mode,
}MultIO_State_e;
typedef struct
{
uint8_t State; //״̬<D7B4><CCAC>״̬
uint8_t reset_flag; //<2F><>λ<EFBFBD><CEBB>־
uint8_t output_state[MultIO_CHN_Max];
uint8_t input_state[MultIO_CHN_Max];
uint8_t input_val[MultIO_CHN_Max]; //0:û<><C3BB><EFBFBD><EFBFBD>, 1:<3A>̰<EFBFBD><CCB0>ɿ<EFBFBD>, 2:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 3:<3A><><EFBFBD><EFBFBD><EFBFBD>ɿ<EFBFBD>
uint8_t last_input_val[MultIO_CHN_Max];
uint8_t delayCnt[MultIO_CHN_Max];
uint8_t delayOffCnt[MultIO_CHN_Max];
uint16_t input_time[MultIO_CHN_Max];
uint32_t wait_tick;
}MultIO_State_t;
void Key_Init(void);
void Multipexing_IO_Init(void);
void Multipexing_IO_Task(void);
#endif