#ifndef __USER_CONFIG_H__ #define __USER_CONFIG_H__ #include "define.h" #ifdef __cplusplus extern "C" { #endif #ifndef DEV_LIC_SIZE #define DEV_LIC_SIZE 16 #endif #ifndef DEV_ADDR_SIZE #define DEV_ADDR_SIZE 6 #endif #define HEAD_VALUE 0xEFAA #define CALIB_WEIGHT_SIZE 10 #define WEIGHT_RANGE_DEFAULT 350000 #define EXT_FUNC_COUNT 32 #define WS2812B_DEFAULT_COUNT 15 #define WS2812B_MAX_COUNT 200 #define ELECT_TIME_DEFAULT 5 #define ELECT_TIME_STEP 100 #define ELECT_TIME_MAX 00 #define ELECT_TIME_MIN 1 typedef enum{ CAN_BAUD_NULL = 0, CAN_BAUD_100 = 100, CAN_BAUD_150 = 150, CAN_BAUD_200 = 200, CAN_BAUD_250 = 250, CAN_BAUD_300 = 300, CAN_BAUD_400 = 400, CAN_BAUD_500 = 500, CAN_BAUD_666 = 666, CAN_BAUD_800 = 800, CAN_BAUD_1000 = 1000 }can_baud_e; typedef struct{ uint8_t left_elect_level:1; //左电磁锁关闭时状态。1:常开,0:常闭 uint8_t right_elect_level:1; //右电磁锁关闭时状态。1:常开,0:常闭 uint8_t:6; }__attribute__((packed)) npn_in_param_s; typedef enum{ RS485_FUNC_NULL = 0, }rs485_func_e; typedef struct{ uint8_t rs485_func[EXT_FUNC_COUNT]; }__attribute__((packed)) rs485_param_s; typedef enum{ I2C_FUNC_NULL = 0, I2C_FUNC_SHT40 = 1, }i2c_func_e; typedef struct{ uint8_t i2c_func[EXT_FUNC_COUNT]; }__attribute__((packed)) i2c_param_s; typedef struct{ uint16_t elect_on_timne[2]; }__attribute__((packed)) elect_param_s; typedef struct{ uint16_t head; can_baud_e can_baud; npn_in_param_s npn_in_param; rs485_param_s rs485_param; i2c_param_s i2c_param; uint8_t left_ws2812b_count; uint8_t right_ws2812b_count; elect_param_s elect_param; }__attribute__((packed)) user_config_param_s; #define USER_CONFIG_STAT_DEFAULT_CONFIG \ { \ .head = HEAD_VALUE, \ .can_baud = CAN_BAUD_1000, \ .npn_in_param = { \ .left_elect_level = 0, \ .right_elect_level = 0, \ }, \ .rs485_param = { \ .rs485_func = {0}, \ }, \ .i2c_param = { \ .i2c_func = {0}, \ }, \ .left_ws2812b_count = WS2812B_DEFAULT_COUNT, \ .right_ws2812b_count = WS2812B_DEFAULT_COUNT, \ .elect_param = { \ .elect_on_timne[LEFT_IDX] = ELECT_TIME_DEFAULT, \ .elect_on_timne[RIGHT_IDX] = ELECT_TIME_DEFAULT, \ }, \ } void User_Config_Read_Config(void); void User_Config_Write_Config(void); void user_config_init(void); bool check_can_baud(uint32_t baud); void set_user_config_param_init(user_config_param_s *param); void FLASH_read(uint32_t addr, uint8_t *pData, uint32_t len); bool user_config_save_can_baud(uint32_t baud); bool user_config_save_ws2812b_count(uint8_t left, uint8_t right); bool user_config_save_elect_time(uint16_t left, uint16_t right); extern user_config_param_s user_config_param; #ifdef __cplusplus } #endif #endif // USER_CONFIG_H__ /** @} */