feat:提交0_10V温控继电器固件
feat:提交0_10V温控继电器固件
This commit is contained in:
107
Source/SYSTEM/inc/control_rly.h
Normal file
107
Source/SYSTEM/inc/control_rly.h
Normal file
@@ -0,0 +1,107 @@
|
||||
#ifndef _RLY_CONTROL_H_
|
||||
#define _RLY_CONTROL_H_
|
||||
|
||||
#include "apt32f102.h"
|
||||
#include "apt32f102_gpio.h"
|
||||
|
||||
#define A9EXPANDTYPE 0x0E//14 //A9RELAY类型
|
||||
|
||||
#define CMD_SET_RLYSTATE 0x20 //设置继电器状态
|
||||
#define CMD_READ_RLYSTATE 0x24 //读取继电器状态
|
||||
#define CMD_SET_WINDOUTVOL 0x27 //设置各个档位的电压输出,0-10000mV
|
||||
#define CMD_READ_WINDOUTVOL 0x29 //读取各个档位的电压输出,0-10000mV
|
||||
#define CMD_SET_DEVPORT 0x28 //设置端口模式
|
||||
#define CMD_READ_DEVPORT 0x2A //读取端口模式
|
||||
|
||||
#define CMD_SET_RLYSTATE_REPLY 0x30 //回复 -- 设置继电器状态
|
||||
#define CMD_READ_RLYSTATE_REPLY 0x34 //回复 -- 读取继电器状态
|
||||
#define CMD_SET_WINDOUTVOL_REPLY 0x37 //回复 -- 设置各个档位的电压输出,0-10000mV
|
||||
#define CMD_READ_WINDOUTVOL_REPLY 0x39 //回复 -- 读取各个档位的电压输出,0-10000mV
|
||||
#define CMD_SET_DEVPORT_REPLY 0x38 //回复 -- 设置端口模式
|
||||
#define CMD_READ_DEVPORT_REPLY 0x3A //回复 -- 读取端口模式
|
||||
|
||||
#define RLY_1_OPEN GPIO_Write_High(GPIOA0,13);
|
||||
#define RLY_1_CLOSE GPIO_Write_Low(GPIOA0,13);
|
||||
|
||||
#define RLY_2_OPEN GPIO_Write_High(GPIOA0,12);
|
||||
#define RLY_2_CLOSE GPIO_Write_Low(GPIOA0,12);
|
||||
|
||||
|
||||
|
||||
#define WIND_LOW 0x01
|
||||
#define WIND_MID 0x02
|
||||
#define WIND_HIGH 0x03
|
||||
#define WIND_STOP 0x00
|
||||
|
||||
|
||||
#define Control_OFF 0x00 //继电器
|
||||
#define Control_ON 0x01 //
|
||||
#define Cnotrol_RES 0x02
|
||||
|
||||
#define ACTIVE_PORT 0x02 //主动端口
|
||||
#define POLLING_PORT 0x01 //轮训端口
|
||||
|
||||
//继电器数量
|
||||
typedef enum{
|
||||
CTRL_RLY1 = 0x00,
|
||||
CTRL_RLY2,
|
||||
WINDRLY_LOW,
|
||||
WINDRLY_MID,
|
||||
WINDRLY_HIGH,
|
||||
|
||||
RLY_MAX,
|
||||
}RLY_g;
|
||||
|
||||
//继电器控制状态
|
||||
typedef enum{
|
||||
NO_CTRL = 0x00, //继电器不控制
|
||||
RLY_OFF, //继电器关闭
|
||||
RLY_ON, //继电器打开
|
||||
RLY_RES, //继电器翻转
|
||||
|
||||
}RLY_CTRL_g;
|
||||
|
||||
typedef enum{
|
||||
SEND_ADDR1 = 0x00,
|
||||
SEND_SN,
|
||||
SEND_TYPE,
|
||||
SEND_ADDR2,
|
||||
SEND_LEN,
|
||||
SEND_SUM,
|
||||
SEND_CMD,
|
||||
SEND_PARA,
|
||||
|
||||
}RECV_g;
|
||||
|
||||
|
||||
typedef struct{
|
||||
|
||||
U8_T rly_control; //继电器控制标志位,0x00:不控制继电器,0x01:直接控制
|
||||
U8_T rly_state[RLY_MAX]; //存储继电器状态,Control_ON,Control_OFF
|
||||
U8_T rly_ctrl_state[RLY_MAX];
|
||||
|
||||
U8_T dev_port; //端口模式,0x01,轮询,0x02,主动
|
||||
U8_T SN;
|
||||
|
||||
U8_T wind;
|
||||
U8_T wind_last;
|
||||
|
||||
U16_T wind_STOP_vol;
|
||||
U16_T wind_LOW_vol; //低风速电压记录,0-10000mV
|
||||
U16_T wind_MID_vol;
|
||||
U16_T wind_HIGH_vol;
|
||||
|
||||
}ZERO_CTRL_RLY;
|
||||
|
||||
extern ZERO_CTRL_RLY c_rly;
|
||||
|
||||
void Relay_Init(void);
|
||||
void BLV_RLY_Ctrl_Purpose(U8_T rly_id,U8_T state);
|
||||
U8_T CheckSum(U8_T *data,U16_T len);
|
||||
U8_T CheckSum2(U8_T *data,U16_T len);
|
||||
U8_T BLV_RLY_RS485_Pro(U8_T *RecData, U16_T Len);
|
||||
void BLV_RLY_Task(void);
|
||||
U8_T Change_OUTV(U16_T VolOut);
|
||||
void CTRL_LEDStatus_Task(void);
|
||||
#endif
|
||||
|
||||
44
Source/SYSTEM/inc/dip_switch.h
Normal file
44
Source/SYSTEM/inc/dip_switch.h
Normal file
@@ -0,0 +1,44 @@
|
||||
#ifndef _DIP_SWITCH_H_
|
||||
#define _DIP_SWITCH_H_
|
||||
|
||||
#include "apt32f102.h"
|
||||
#include "apt32f102_gpio.h"
|
||||
|
||||
#define DIP_PRESS 0x00 //按键按下为低
|
||||
#define DIP_LOOSEN 0x01 //按键松开为高
|
||||
#define DIP_DELAY_COUNT 5 //扫描次数
|
||||
#define DIP_SCAN_Time 20 //每次扫描时间
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DIP_CH1,
|
||||
DIP_CH2,
|
||||
DIP_CH3,
|
||||
|
||||
DIP_CHN_MAX,
|
||||
}DIP_CHN_e;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
DIP_VAL_OFF, //松开
|
||||
DIP_VAL_ON, //按下
|
||||
}DIP_VAL_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
U8_T delayCnt_ON[DIP_CHN_MAX];
|
||||
U8_T delayCnt_OFF[DIP_CHN_MAX];
|
||||
|
||||
U8_T addr; //2025-06-23
|
||||
|
||||
U32_T DIP_val;
|
||||
U32_T DIP_last_val;
|
||||
}DIP_t;
|
||||
|
||||
extern DIP_t g_Dip;
|
||||
|
||||
void DIP_Switch_Init(void);
|
||||
uint8_t DIP_GetSwitchState(uint8_t i);
|
||||
void DIP_ScanTask(void);
|
||||
|
||||
#endif
|
||||
72
Source/SYSTEM/inc/eeprom.h
Normal file
72
Source/SYSTEM/inc/eeprom.h
Normal file
@@ -0,0 +1,72 @@
|
||||
#ifndef _EEPROM_H_
|
||||
#define _EEPROM_H_
|
||||
#include "includes.h"
|
||||
#include "apt32f102.h"
|
||||
|
||||
/*地址范围:0x10000000~0x100007FF*/
|
||||
#define EEPROM_MCUDevInfo_Address 0x10000000 //MCU 设备信息地址固定为0x10000000,大小为0x40 此区域不可改动
|
||||
|
||||
#define EEPROM_PARA_SaveAddr 0x10000100
|
||||
|
||||
#define EEPROM_TOUCHPARA1_SaveAddr 0x10000200
|
||||
#define EEPROM_TOUCHPARA2_SaveAddr 0x10000280
|
||||
#define EEPROM_TOUCHPARA3_SaveAddr 0x10000300
|
||||
|
||||
|
||||
/* EEPROM 保存数据格式:
|
||||
* FLAG - 1Byte 保存标志位
|
||||
* LEN - 2Byte 保存数据长度
|
||||
* CHECK - 1Byte 保存数据校验
|
||||
* DATA - nByte 保存数据内容
|
||||
*
|
||||
* */
|
||||
#define EEPROM_SAVE_Flag 0xA5 //EEPROM保存标志位
|
||||
//#define EEPROM_PARA_Size 50
|
||||
#define EEPROM_Data_Offset 0x04
|
||||
|
||||
/*boot*/
|
||||
#define EEPROM_Offset_SaveFlag 0x00
|
||||
#define EEPROM_Offset_Datalen 0x01
|
||||
#define EEPROM_Offset_Check 0x03
|
||||
#define EEPROM_Offset_Data 0x04
|
||||
|
||||
|
||||
#define EEPROM_SVAE_FLAG 0xAE
|
||||
#define EEPROM_DATA_Size_Max 0x40 //目前保存数据内容最长为100Byte
|
||||
#define EEPROM_PARA_Size 50
|
||||
#define EEPROM_DEV_NAME_Size 32
|
||||
|
||||
|
||||
#define EEPROM_WINDSTOP_OUT_Default 0 //0-10000mV
|
||||
#define EEPROM_WINDLOW_OUT_Default 3000 //
|
||||
#define EEPROM_WINDMID_OUT_Default 6000 //
|
||||
#define EEPROM_WINDHIGH_OUT_Default 10000 //
|
||||
#define EEPROM_Device_Addr_Default 0x01 //设备初始地址
|
||||
|
||||
|
||||
typedef struct{
|
||||
|
||||
U8_T dev_addr; //设备地址
|
||||
U8_T dev_type; //设备类型
|
||||
U8_T dev_boot_ver; //设备Boot的软件版本号
|
||||
U8_T dev_app_ver; //设备APP的软件版本号
|
||||
U8_T dev_name_len; //设备名称的长度
|
||||
U8_T dev_name[EEPROM_DEV_NAME_Size]; //设备名称
|
||||
|
||||
}E_MCU_DEV_INFO;
|
||||
|
||||
extern E_MCU_DEV_INFO g_mcu_dev;
|
||||
|
||||
|
||||
void EEPROM_Init(void);
|
||||
U8_T EEPROM_ReadPara(void);
|
||||
U8_T EEPROM_WritePara(void);
|
||||
void EEPROM_TouchPara_Printf();
|
||||
|
||||
/*boot*/
|
||||
U8_T EEPROM_ReadMCUDevInfo(E_MCU_DEV_INFO *info);
|
||||
U8_T EEPROM_WriteMCUDevInfo(E_MCU_DEV_INFO *info);
|
||||
void EEPROM_Default_MCUDevInfo(E_MCU_DEV_INFO *info);
|
||||
void EEPROM_Validate_MCUDevInfo(E_MCU_DEV_INFO *info);
|
||||
|
||||
#endif
|
||||
175
Source/SYSTEM/inc/uart.h
Normal file
175
Source/SYSTEM/inc/uart.h
Normal file
@@ -0,0 +1,175 @@
|
||||
#ifndef _UART_H_
|
||||
#define _UART_H_
|
||||
|
||||
#include "apt32f102.h"
|
||||
#include "apt32f102_uart.h"
|
||||
|
||||
#define Recv_2400_TimeOut 3 //ms
|
||||
#define Recv_9600_TimeOut 3 //ms
|
||||
#define Recv_115200_TimeOut 3 //ms
|
||||
|
||||
#define USART_BUFFER_NUM 3
|
||||
#define USART_BUFFER_SIZE 70
|
||||
#define USART_SEND_SIZE 128
|
||||
|
||||
#define UART_SEND_BUFFER_NUM 10
|
||||
#define UART_SEND_BUFFER_SIZE 20
|
||||
|
||||
#define UART485_TX_PIN
|
||||
#define UART485_RX_PIN 15 //PA0.15
|
||||
#define UART485_DR_PIN 7 //PA0.7
|
||||
|
||||
#define READ_RX_LEVEL_STATE GPIO_Read_Status(GPIOA0,UART485_RX_PIN) //485总线RX引脚
|
||||
|
||||
#define WRITE_HIGH_DR GPIO_Write_High(GPIOA0,UART485_DR_PIN) //485 DR
|
||||
#define WRITE_LOW_DR GPIO_Write_Low(GPIOA0,UART485_DR_PIN) //485 DR
|
||||
#define REVERISE_DR GPIO_Reverse(GPIOA0,UART485_DR_PIN) //485 DR
|
||||
|
||||
#define LED_TX_PIN 0//PA0.0
|
||||
#define LED_RX_PIN 1//PA0.1
|
||||
#define LED_STATUS_PIN 4//PA0.4
|
||||
|
||||
#define TX_LED_ON GPIO_Write_Low(GPIOA0,LED_TX_PIN)
|
||||
#define TX_LED_OFF GPIO_Write_High(GPIOA0,LED_TX_PIN)
|
||||
|
||||
#define RX_LED_ON GPIO_Write_Low(GPIOA0,LED_RX_PIN)
|
||||
#define RX_LED_OFF GPIO_Write_High(GPIOA0,LED_RX_PIN)
|
||||
|
||||
#define STATUS_LED_ON GPIO_Write_Low(GPIOA0,LED_STATUS_PIN)
|
||||
#define STATUS_LED_OFF GPIO_Write_High(GPIOA0,LED_STATUS_PIN)
|
||||
#define REVERISE_STATUS GPIO_Reverse(GPIOA0,LED_STATUS_PIN)
|
||||
|
||||
|
||||
#define UART_BUSBUSY 0x01 //总线繁忙
|
||||
#define UART_BUSIDLE 0x00 //总线空闲
|
||||
|
||||
#define BUSSend_WaitTime1 300 //数据有效期:短按数据有效期
|
||||
#define BUSSend_WaitTime2 3000 //数据有效期:
|
||||
#define BUSSend_WaitTime3 60000 //数据有效期:
|
||||
|
||||
#define BUSSendCnt1 1 //点按数据上报次数
|
||||
#define BUSSendCnt2 1//强电4,弱电1 //长按按下数据上报次数
|
||||
#define BUSSendCnt3 1//强电8,弱电1 //长按松开数据上报次数
|
||||
#define BUSSend_Tick 300 //数据发送间隔
|
||||
|
||||
|
||||
/*调试信息相关定义*/
|
||||
#ifndef DBG_LOG_EN
|
||||
#define DBG_LOG_EN 0 //DEBUG LOG 输出总开关
|
||||
#endif
|
||||
|
||||
/*调试信息初始状态*/
|
||||
#define DBG_OPT_Debug_STATUS 0 //临时调试信息打印开关
|
||||
#define DBG_OPT_DEVICE_STATUS 0 //设备驱动层打印调试信息打印开关
|
||||
#define DBG_OPT_SYS_STATUS 1 //系统调试信息打印开关
|
||||
|
||||
/*调试信息输出控制位*/
|
||||
#define DBG_BIT_Debug_STATUS 2
|
||||
#define DBG_BIT_DEVICE_STATUS 1
|
||||
#define DBG_BIT_SYS_STATUS 0
|
||||
|
||||
#if DBG_LOG_EN
|
||||
#define DBG_SendByte(data) //UARTTxByte(UART2,data)
|
||||
//#define DBG_Printf(data,len) UARTTransmit(UART2,data,len)
|
||||
|
||||
#define DBG_Printf(data,len) MCU485_SendData(data,len)
|
||||
#else
|
||||
#define DBG_SendByte(data)
|
||||
#define DBG_Printf //MCU485_SendData(data,len)
|
||||
#endif
|
||||
|
||||
typedef U8_T (*Uart_prt)(U8_T *,U16_T);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UART_0,
|
||||
UART_1,
|
||||
UART_2,
|
||||
UART_3,
|
||||
UART_MAX,
|
||||
}UART_IDX;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
BUSSEND_SUCC = 0x00, //等待发送机会
|
||||
BUSSEND_WAIT, //发送成功
|
||||
DATA_END, //数据有效期结束
|
||||
RETRY_END, //重发结束
|
||||
LEN_ERR, //长度错误
|
||||
}BUSSEND_REV;
|
||||
|
||||
typedef struct{
|
||||
|
||||
U8_T RecvBuffer[USART_BUFFER_SIZE];
|
||||
U8_T DealBuffer[USART_BUFFER_SIZE]; //数据处理缓冲
|
||||
|
||||
U8_T Receiving;
|
||||
U16_T DealLen;
|
||||
|
||||
U16_T RecvLen;
|
||||
|
||||
U32_T RecvTimeout;
|
||||
U32_T RecvIdleTiming;
|
||||
|
||||
Uart_prt processing_cf; //处理函数指针
|
||||
}UART_t;
|
||||
|
||||
|
||||
typedef struct{ //总线繁忙判断
|
||||
U8_T SendBuffer[USART_SEND_SIZE]; //发送缓冲
|
||||
|
||||
U8_T BusState_Flag; //总线繁忙标记位, 0x01:总线繁忙,0x00:总线空闲
|
||||
U8_T HighBit_Flag; //串口RX高电平标记位,默认是高电平0x01.
|
||||
U8_T BUSBUSY_LOCK; //锁定总线繁忙状态
|
||||
|
||||
U8_T SendState; //当前发送状态
|
||||
U8_T ResendCnt; //当前发送次数
|
||||
U8_T ASend_Flag; //主动上报发送标记
|
||||
U8_T TotalCnt; //发送总次数
|
||||
U8_T SetBaudFlag; //设置波特率
|
||||
U8_T Jump_Flag; //跳转标志位
|
||||
|
||||
U16_T SendLen; //发送缓冲区数据长度
|
||||
|
||||
U32_T Bus_DelayTime; //总线繁忙转换到空闲状态的随机延时时间
|
||||
U32_T DataWait_Time; //上报数据间隔
|
||||
U32_T DataValid_Time; //上报数据有效期
|
||||
|
||||
|
||||
U32_T BusState_Tick; //总线繁忙状态判断时间戳
|
||||
U32_T ASend_Tick; //主动上报发送间隔判断时间戳
|
||||
U32_T BusbusyTimeout; //上报数据有效期判断时间戳
|
||||
|
||||
}MULIT_t;
|
||||
|
||||
|
||||
extern MULIT_t m_send;
|
||||
extern UART_t g_uart;
|
||||
extern U32_T Dbg_Switch;
|
||||
|
||||
|
||||
extern volatile int RS485_Comm_Flag,RS485_Comm_Start,RS485_Comm_End,RS485_Comming;
|
||||
|
||||
void UARTx_Init(UART_IDX uart_id, Uart_prt prt_cf);
|
||||
void UART0_RecvINT_Processing(char data);
|
||||
void UART0_TASK(void);
|
||||
void UART1_RecvINT_Processing(char data);
|
||||
void UART1_TASK(void);
|
||||
void UART2_RecvINT_Processing(char data);
|
||||
void UART2_TASK(void);
|
||||
void MCU485_SendData(U8_T *buff,U16_T len);
|
||||
|
||||
void Dbg_Print(int DbgOptBit, const char *cmd, ...);
|
||||
void Dbg_Println(int DbgOptBit, const char *cmd, ...);
|
||||
void Dbg_Print_Buff(int DbgOptBit, const char *cmd, U8_T *buff,U16_T len);
|
||||
|
||||
void BusIdle_Task(void);
|
||||
void BusBusy_Task(void);
|
||||
void BUS485Send_Task(void);
|
||||
U8_T MultSend_Task(U8_T *buff,U16_T len,U8_T DatSd);
|
||||
U8_T BUS485_Send(U8_T *buff,U16_T len);
|
||||
void Set_GroupSend(U8_T *data,U16_T sled,U8_T SCnt,U32_T indate,U32_T tim_val);
|
||||
void Clear_SendFlag(void);
|
||||
void BUS485_Jump_Boot(U8_T jump);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user