#ifndef __SUB_SYS_H__
#define __SUB_SYS_H__
#include "sys.h"
#define Sys_Falut_Run_Disable 0//故障时是否停机 0:开机 1:停机
#define Open_Door_Mode_Run_Enble 0//是否启用开门模式
#define LED_Power_ON GPIO_ResetBits(GPIOB,GPIO_Pin_12);//Gpio_ClrIO(GpioPortB, GpioPin12);
#define LED_Power_OFF GPIO_SetBits(GPIOB,GPIO_Pin_12);//Gpio_SetIO(GpioPortB, GpioPin12);
#define LED_FAN_ON GPIO_ResetBits(GPIOB,GPIO_Pin_13);//Gpio_ClrIO(GpioPortB, GpioPin13);
#define LED_FAN_OFF GPIO_SetBits(GPIOB,GPIO_Pin_13);//Gpio_SetIO(GpioPortB, GpioPin13);
#define LED_Cold_ON GPIO_ResetBits(GPIOB,GPIO_Pin_14);//Gpio_ClrIO(GpioPortB, GpioPin14);
#define LED_Cold_OFF GPIO_SetBits(GPIOB,GPIO_Pin_14);//Gpio_SetIO(GpioPortB, GpioPin14);
#define LED_Warning_ON GPIO_ResetBits(GPIOB,GPIO_Pin_15);//Gpio_ClrIO(GpioPortB, GpioPin15);
#define LED_Warning_OFF GPIO_SetBits(GPIOB,GPIO_Pin_15);//Gpio_SetIO(GpioPortB, GpioPin15);
#define LED_Set_ON GPIO_ResetBits(GPIOA,GPIO_Pin_8);//Gpio_ClrIO(GpioPortA, GpioPin8);
#define LED_Set_OFF GPIO_SetBits(GPIOA,GPIO_Pin_8);//Gpio_SetIO(GpioPortA, GpioPin8);
#define Buzzer_ON GPIO_SetBits(GPIOC,GPIO_Pin_13);//Gpio_SetIO(GpioPortC, GpioPin13);
#define Buzzer_OFF GPIO_ResetBits(GPIOC,GPIO_Pin_13);//Gpio_ClrIO(GpioPortC, GpioPin13);
#define RS485_RX GPIO_ResetBits(GPIOB,GPIO_Pin_11);//Gpio_ClrIO(GpioPortB, GpioPin11);
#define RS485_TX GPIO_SetBits(GPIOB,GPIO_Pin_11);//Gpio_SetIO(GpioPortB, GpioPin11);
#define Comm_RX_Read_Cmd 0x03//读取寄存器
#define Comm_RX_Write_Multiple_CMD 0x10//多个字节写入
//制冷模式
#define Sys_Waitling 0//待机
#define Cold_Mode 1//制冷
#define Saft_Mode 2//安全模式
#define Open_Door_Mode 3//开门模式
#define Over_Voltage_Error 1//过压故障
#define Under_Voltage_Error 2//欠压故障
#define Soft_Over_Current_Error 3//软件过流故障
#define Soft_Over_Current_Error 3//软件过流故障
#define Hardware_Over_Current_Error 4//硬件过流故障
#define Over_Temp_Error 5//驱动器Mos过温故障
#define Phase Loss_Error 6//输出缺相故障
#define Stall_Error 7//堵转故障
#define Comm_Error 8//通讯故障
#define Pressure Switch_Error 9//压力开关或者排气过温故障
#define Compressor_Over_Temp_Error 10//压缩机过温
#define Board_Temp_Sensor_Error 11//柜内温度传感器故障
#define Mos_Temp_Sensor_Error 12//Mos温度传感器故障
//键值
#define Power_Key_Bit 1
#define Inquire_Key_Bit 1<<1
#define Rev_Key_Bit 1<<2
#define Set_Key_Bit 1<<3
#define Up_Key_Bit 1<<4
#define Down_Key_Bit 1<<5
#define Power_Key_Long 100+1
#define Inquire_Key_Long 100+(1<<1)
#define Rev_Key_Long 100+(1<<2)
#define Set_Key_Long 100+(1<<3)
#define Up_Key_Long 100+(1<<4)
#define Down_Key_Long 100+(1<<5)
#define Menu_Max_Num FMenu_Max_Num+CMenu_Max_Num+LMenu_Max_Num//所有菜单数量
#define FMenu_Max_Num 25//F菜单数量
#define CMenu_Max_Num 25//C菜单数量
#define LMenu_Max_Num 25//L菜单数量
//数据存储起始地址
#define Menu_Save_Start_Adss 0x08007800//数据存储在125扇区
#define MenuF_Save_Start_Adss 0x08007800//F组数据存储起始地址
#define MenuL_Save_Start_Adss 0x08007800+0x200//L组数据存储起始地址
//数据初始化标志存储地址
#define Menu_Para_Init_Flag_Adss 0x08007C00//数据存储在126扇区
//数据校验位存储地址
#define Menu_Para_Sum_Adss MenuL_Save_Start_Adss+0x100//数据校验码存储地址
#define MenuF_Backup_Start_Adss 0x0800F000//数据备份存储在125扇区
#define MenuL_Backup_Start_Adss 0x0800F000+0x200//数据备份存储在125扇区
#define Menu_Backup_Sum_Adss MenuL_Backup_Start_Adss+0x100//数据校验码存储地址
#define PLC_RAM8(x) (*(uint8_t*)(uint32_t)(x)) //字节方式 R/W RAM R ROM
#define PLC_RAM16(x) (*(uint16_t*)(uint32_t)(x)) //半字方式 R/W RAM R ROM
#define USART2_SEND_BUFFER_LEN 300
#define USART2_RX_BUFFER_LEN 300
/** generic error codes */
typedef enum en_result
{
Ok = 0u, ///< No error
Error = 1u, ///< Non-specific error code
ErrorAddressAlignment = 2u, ///< Address alignment does not match
ErrorAccessRights = 3u, ///< Wrong mode (e.g. user/system) mode is set
ErrorInvalidParameter = 4u, ///< Provided parameter is not valid
ErrorOperationInProgress = 5u, ///< A conflicting or requested operation is still in progress
ErrorInvalidMode = 6u, ///< Operation not allowed in current mode
ErrorUninitialized = 7u, ///< Module (or part of it) was not initialized properly
ErrorBufferFull = 8u, ///< Circular buffer can not be written because the buffer is full
ErrorTimeout = 9u, ///< Time Out error occurred (e.g. I2C arbitration lost, Flash time-out, etc.)
ErrorNotReady = 10u, ///< A requested final state is not reached
OperationInProgress = 11u ///< Indicator for operation in progress
} en_result_t;
typedef struct
{
uint16_t LED_BIT1;
uint16_t LED_BIT2;
uint16_t LED_BIT3;
uint16_t LED_BIT4;
uint16_t LED_Dis_Buffer[5];
uint16_t LED_Dis_Num;
uint16_t LED_Dis_Num_Point;
uint16_t LED_Dis_Num_Bit;
}Dis_Struct;
extern Dis_Struct Dis_Val;
struct Dis_BITS
{
uint16_t LEDA:1;
uint16_t LEDB:1;
uint16_t LEDC:1;
uint16_t LEDD:1;
uint16_t LEDE:1;
uint16_t LEDF:1;
uint16_t LEDG:1;
uint16_t LEDH:1;
uint16_t rsvd:8;
};
union Dis_Union
{
uint16_t all;
struct Dis_BITS bit;
};
extern union Dis_Union Dis_Bits;
typedef struct
{
uint16_t Key_Num;//键值
uint16_t Buzzer_Drv_Time;//蜂鸣器运行时间
int16_t Board_Temp;//柜内温度
uint16_t Sys_Run_Mode;//系统运行模式
uint16_t Sys_Run_Enable;//系统运行
uint16_t Compressor_Run_Enable;//压缩机运行
uint16_t Compressor_Run_Speed;//压缩机运行速度
uint16_t OUT_Door_Fan_Run_Enable;//室外风机运行
uint16_t InDoor_Fan_Run_Enable;//室内风机运行
uint16_t Fault_Record_Reset;//故障记录清零
uint16_t Fault_Code;//故障代码
uint16_t Warning_Code;//警告代码
uint16_t Compressor_Allow_Run_Flag;
uint16_t Aim_Temp_Arrived_Delay;
uint16_t Compressor_Run_Frq_Level;//运行频率
uint16_t Compressor_Run_Frq_Change_Flag;//压缩机运行频率改变标志
uint16_t Rs485_Comm_OK_Flag;
uint32_t On_Time;//上电时间 单位秒
uint16_t Buzzer_Fault_Reset;//故障时蜂鸣器复位
uint16_t Buzzer_Fault_Run_Flag;//故障时蜂鸣器运行标志
//xg-230814N-------
uint8_t errdistm;
uint8_t errcnt;
uint8_t errnumb;
uint8_t errall[16];
uint8_t diserr;
uint16_t outFan_end_Cnt;
//-------xg-230814N
}Sys_Run_Struct;
extern Sys_Run_Struct Sys_Run;
typedef struct
{
uint16_t Send_Data_Type;
uint16_t Send_Data_Length;
uint16_t Send_Data_Cnt;
uint8_t Send_Data[100];
uint16_t Rev_Data_Length;
uint8_t Rev_Data_Cnt;
uint16_t Rev_Data_Start;
uint16_t Rev_Data_Done;
uint8_t Rev_Data[100];
uint8_t RS485_OK;
uint16_t RS485_Error;
}Sys_Uart_Struct;
extern Sys_Uart_Struct Uart1_Val;
typedef struct
{
uint16_t Grade_Level;//菜单等级
uint16_t Grade_Monitor_Level;//监控菜单等级
uint16_t Menu_GroupF_Level;//F菜单组等级
uint16_t Menu_GroupC_Level;//C菜单组等级
uint16_t Menu_GroupL_Level;//L菜单组等级
uint16_t Menu_Para_Level;//参数菜单等级
}Menu_Struct;
extern Menu_Struct Menu_Val;
enum Run_Frq_enum
{
Run_Frq_Non = 0,//运行频率0
Compressor_Run_Frq_100,//满速
Compressor_Run_Frq_95,//95%满速
Compressor_Run_Frq_90,//90%满速
Compressor_Run_Frq_85,//85%满速
Compressor_Run_Frq_80,//80%满速
Compressor_Run_Frq_Lower,//最低速
};
enum Grade_Level_enum
{
Grade_Level_Power_Up_Num = 0,//上电界面
Grade_Monitor_Level_Num,//监控界面
Menu_GroupF_Level_Num,//F菜单组
Menu_GroupC_Level_Num,//C菜单组
Menu_GroupL_Level_Num,//L菜单组
Menu_ParaF_Level_Num,//F参数设置
Menu_ParaC_Level_Num,//C参数设置
Menu_ParaL_Level_Num,//L参数设置
Menu_ParaF3_Level_Num,//快捷设置柜温
};
//设置菜单参数表
typedef struct
{
int16_t MenuF_Over_Udc;//直流母线过压值1
int16_t MenuF_Under_Udc;//直流母线欠压值2
int16_t MenuF_Board_Temp_Aim;//柜内温度目标值3
int16_t MenuF_Compressor_Run_Delay_Time;//压缩机启动延迟时间4
int16_t MenuF_Cold_Compressor_Speed;//制冷模式压缩机转速值5
int16_t MenuF_Saft_Compressor_Speed;//安全模式压缩机转速值6
int16_t MenuF_P_Compressor_Min_Speed;//P调节压缩机最低转速值7
int16_t MenuF_INV_Or_No;//变频模式开关8
int16_t MenuF_Open_Door_Time;//开门模式时间9
int16_t MenuF_Temp_Change_Delay_Time;//温区改变时间设置10
int16_t MenuF_yuL00;
int16_t MenuF_yuL01;
int16_t MenuF_yuL02;
int16_t MenuF_yuL03;
int16_t MenuF_yuL04;
int16_t MenuF_yuL05;
int16_t MenuF_yuL06;
int16_t MenuF_yuL07;
int16_t MenuF_yuL08;
int16_t MenuF_yuL09;
int16_t MenuF_yuL10;
int16_t MenuF_yuL11;
int16_t MenuF_yuL12;
int16_t MenuF_yuL13;
int16_t MenuF_yuL14;
//int16_t Reserve_Val[15];//保留参数
}MenuF_Struct;
union MenuF_Union
{
int16_t MenuF_Union_Val[FMenu_Max_Num];
MenuF_Struct MenuF_Struct;
};
extern union MenuF_Union MenuF_Val;
//查询菜单参数表
typedef struct
{
int16_t MenuC_Udc;//直流母线电压1
int16_t MenuC_Compressor_Current;//压缩机电流2
int16_t MenuC_Compressor_Speed;//压缩机转速3
int16_t MenuC_Board_Temp;//柜内温度4
int16_t MenuC_Mos_Temp;//MOS温度5
int16_t MenuC_Error1;//故障信息1 6
int16_t MenuC_Error2;//故障信息2 7
int16_t MenuC_Warning;//警告信息8
int16_t MenuC_Defrost_Temp;//除霜温度信息9
int16_t MenuC_Set_Speed;//下发频率10
int16_t Reserve_Val[15];//保留参数
}MenuC_Struct;
union MenuC_Union
{
int16_t MenuC_Union_Val[CMenu_Max_Num*2];
MenuC_Struct MenuC_Struct;
};
extern union MenuC_Union MenuC_Val;
//共振点设置菜单
typedef struct
{
int16_t JumpFrq1;//共振频率1
int16_t JumpFrq2;//共振频率2
int16_t JumpFrq3;//共振频率3
int16_t JumpFrq4;//共振频率4
int16_t JumpFrq5;//共振频率5
int16_t JumpFrq6;//共振频率6
int16_t JumpFrq7;//共振频率7
int16_t JumpFrq8;//共振频率8
int16_t JumpFrq9;//共振频率9
int16_t JumpFrq10;//共振频率10
int16_t Reserve_Val[15];//保留参数
}MenuL_Struct;
union MenuL_Union
{
int16_t MenuL_Union_Val[LMenu_Max_Num];
MenuL_Struct MenuL_Struct;
};
extern union MenuL_Union MenuL_Val;
extern const int16_t FUNCCODE_MenuF_Code[FMenu_Max_Num][4];
extern const int16_t FUNCCODE_MenuC_Point_Code[CMenu_Max_Num];
extern const int16_t FUNCCODE_MenuL_Code[LMenu_Max_Num][4];
void Sub_Dis_Num(int16_t Val,uint16_t Point);
uint16_t Get_Key(void);
void Sub_Menu(void);
void Sub_Scan_Led(void);
void Sub_Dis_Char(void);
int16_t Num_Abs(int16_t Val);
void Menu_Para_Init(void);
void Menu_Para_Save(void);
void Sub_Buzzer_Drv(void);
void Sub_LED_Lamp(void);
void Sub_Sys_Working(void);
void Delay_us(uint32_t Dat);
uint16_t Compressor_Run_Frq_Adjust(uint16_t Val);
void Sub_Uart_Init(void);
void Sub_Uart1_Comm(void);
void App_PortCfg(void);
void App_ClkDivInit(void);
void Sys_Val_Exchange(void);
uint16_t CrcValueByteCalc(const uint8_t *data, uint16_t length);
void RCC_Configuration(void);
void USART2_Configuration(void);
void USART2_Send_Data(uint32_t Len);
void IWDG_Init(u8 prer,u16 rlr);
#endif