/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2024-05-06 lijian the first version */ #ifndef APPLICATIONS_IO_INOUT_H_ #define APPLICATIONS_IO_INOUT_H_ #include #include #include #define OUTPUT_NUM 8 #define INPUT_NUM 8 // #define IN0 0x22 //1 #define IN1 0x23 //2 锁1状态 #define IN2 0x5 //3 锁2状态 #define IN3 0x6 //4 锁3状态 #define IN4 0x7 //5 右盖板检测 #define IN5 0x24 //6 左盖板检测 #define IN6 0x8 //7 启停 #define IN7 0x29 //8 主轴 #define OUT0 GET_PIN(A, 11) //1 #define OUT1 GET_PIN(C, 8) //2 #define OUT2 GET_PIN(C, 7) //3 #define OUT3 GET_PIN(B, 12) //4 #define OUT4 GET_PIN(B, 13) //5 #define OUT5 GET_PIN(B, 14)//6 #define OUT6 GET_PIN(B, 15) //7 #define OUT7 GET_PIN(C, 6) //8 typedef struct { rt_uint8_t Key; // 电平键值 rt_uint8_t Key_Flag; // 电平键值 rt_uint8_t InputType; // 输入类型 0输入 1转速 2针数 rt_uint32_t Temp_Count; //中断触发次数 rt_uint32_t Count; // 高低电平交替后触发次数 rt_uint32_t NeedleCount; // 当前针数 rt_uint32_t NeedleCount_last; // 当前针数 rt_uint32_t NeedleCount_Sum; // 总针数 rt_uint32_t Speed; // 速度 rt_uint32_t Month_Count; // 月电平触发次数 rt_uint32_t Month_NeedleCount_Sum; // 月总针数 rt_uint32_t Old_Count; // 总电平触发次数 rt_uint32_t Old_NeedleCount_Sum; // 总总针数 } Data; // IO数据 typedef struct { rt_uint32_t Ok_Num; // 产量 rt_uint32_t Month_Num; // 月总产量 rt_uint32_t Old_Num; // 历史产量 rt_uint8_t Write_Flag; // 写入eeprom标志位:1已写入 0未写入 rt_uint8_t Speed_io;//速度端口 rt_uint8_t Needle_io;//针数端口 rt_uint8_t SpeedUpdateFlag; // 速度更新标志位 rt_uint8_t NeedleCountUpdateFlag; // 针数更新标志位 rt_uint8_t log; rt_uint8_t Value; } Flag; // IO状态 typedef struct { rt_uint8_t InputType; // 输入类型 rt_uint8_t Key; // 键值 } Out; // 输出IO状态 typedef struct { Out IO_Out[8]; // IO输出端口状态 Data IO_Data[8]; // IO当前数据 Flag IO_Flag; // IO状态 } IO_t; //IO结构体 /** * 输入引脚初始化 */ void gpio_input_init(void); //输出引脚初始化 void gpio_output_init(void); //获取端口电平触发次数 rt_uint32_t get_IO_count(rt_uint8_t io); //获取端口电平值 rt_uint8_t get_IO_Value(); rt_uint8_t get_IO_NeedleCountUpdateFlag(); void set_IO_Needle_io(rt_uint8_t io); //控制台更改电平 void IO_key(); rt_uint32_t get_IO_NeedleCount_sum(); void set_IO_NeedleCount_sum(rt_uint8_t count); void updateKeyValue(void); void updateNeedleCount(void); void set_IO_log(rt_uint8_t log); #endif /* APPLICATIONS_IO_INOUT_H_ */