113 lines
2.9 KiB
C
113 lines
2.9 KiB
C
#ifndef _SCR_SETTING_PROGRAM_OUT_H_
|
||
#define _SCR_SETTING_PROGRAM_OUT_H_
|
||
|
||
#include "apps_gather.h"
|
||
|
||
//输出方式
|
||
#define PROG_OUT_V 0
|
||
#define PROG_OUT_MA 1
|
||
|
||
//输出模式
|
||
#define PROG_OUT_STEP 0
|
||
#define PROG_OUT_TRIANGLE 1
|
||
|
||
//最大循环次数
|
||
#define CIRCULATIONS_MAX 10
|
||
|
||
//三角波每个周期的间隔数量
|
||
#define TRIANLE_PLOT_INTERVAL_MAX 20
|
||
|
||
//CONFIG1
|
||
#define CONF1_OUTPUT_UNIT 0
|
||
#define CONF1_OUTPUT_MODE 1
|
||
#define CONF1_CIRCULATIONS 2
|
||
#define CONF1_NEXT 3
|
||
|
||
//CONFIG2_STEP
|
||
#define CONF2_OUTPUT_MODE 0
|
||
#define CONF2_START_PERCENT 1
|
||
#define CONF2_END_PERCENT 2
|
||
#define CONF2_STEP_PERCENT 3
|
||
#define CONF2_HOLD_TIME 4
|
||
#define CONF2_RISING_PERCENT 5
|
||
#define CONF2_FALLING_PERCENT 6
|
||
#define CONF2_PERIOD 7
|
||
|
||
typedef enum
|
||
{
|
||
PROGOUT_WAITING = 0,
|
||
PROGOUT_START,
|
||
PROGOUT_RUNNING,
|
||
PROGOUT_PAUSE,
|
||
PROGOUT_END
|
||
}PROGRAM_OUT_PROCESS;
|
||
|
||
typedef struct
|
||
{
|
||
uint8_t output_unit; //输出信号的物理量单位,mA、V
|
||
uint8_t output_mode; //输出模式,阶跃、三角波
|
||
uint8_t circulations; //循环次数,1-10、无穷
|
||
uint16_t hold_time; //阶跃保持时间,开始和结束的等待时间
|
||
uint8_t start_percent; //起点百分比
|
||
uint8_t end_percent; //终点百分比
|
||
uint8_t step_percent; //步长百分比
|
||
uint8_t rising_percent; //三角波爬升占比
|
||
uint8_t falling_percent; //三角波下降占比
|
||
uint16_t period; //三角波周期
|
||
|
||
PROGRAM_OUT_PROCESS process; //过程,当前处于哪一步
|
||
int16_t out_max; //输出物理量的实际值上限
|
||
int16_t out_min; //输出物理量的实际值下限
|
||
uint8_t out_percent; //当前输出百分比
|
||
|
||
int progout_tick_flag; //计时标志,1:定时器计时,0:暂停计时
|
||
int progout_tick; //计时计数,正常情况下不会溢出
|
||
}PROGRAM_OUT_DATA;
|
||
|
||
extern PROGRAM_OUT_DATA progout_data;
|
||
extern uint8_t cursor_conf1;
|
||
extern uint8_t cursor_conf1_prv;
|
||
extern uint8_t cursor_conf2;
|
||
extern uint8_t cursor_conf2_prv;
|
||
|
||
//初始化相关参数
|
||
void program_out_init(void);
|
||
|
||
//初始化config1界面
|
||
void program_out_config1(void);
|
||
|
||
//更新config1右列文本内容
|
||
void text_update_conf1(uint8_t con);
|
||
|
||
//修改config1右列值
|
||
void val_modify_conf1(int8_t step);
|
||
|
||
//初始化config2界面
|
||
void program_out_config2(void);
|
||
|
||
//更新config2右列文本内容
|
||
void text_update_conf2(uint8_t con);
|
||
|
||
//修改config2右列值
|
||
void val_modify_conf2(int8_t step);
|
||
|
||
//执行编程输出流程
|
||
void program_out_run(void);
|
||
|
||
//执行编程输出,阶跃
|
||
void program_out_step(void);
|
||
|
||
//执行编程输出,三角波
|
||
void program_out_triangle(void);
|
||
|
||
//置于mux任务内,实时性更强
|
||
void running_process_step(void);
|
||
|
||
//置于mux任务内,实时性更强
|
||
void running_process_triangle(void);
|
||
|
||
//百分比转化为数值输出, perc:[0, 100]
|
||
void percent2val_out(float32 perc);
|
||
|
||
#endif
|