2024-05-13 08:08:47 +00:00
|
|
|
|
/*
|
|
|
|
|
|
* 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 <rtthread.h>
|
|
|
|
|
|
#include <drv_common.h>
|
|
|
|
|
|
#include <rtdevice.h>
|
|
|
|
|
|
|
|
|
|
|
|
#define OUTPUT_NUM 8
|
|
|
|
|
|
#define INPUT_NUM 8
|
|
|
|
|
|
|
2024-05-17 07:00:05 +00:00
|
|
|
|
//
|
|
|
|
|
|
#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
|
2024-05-13 08:08:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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; // 针数更新标志位
|
2024-05-15 09:41:42 +00:00
|
|
|
|
rt_uint8_t log;
|
2024-05-17 07:00:05 +00:00
|
|
|
|
rt_uint8_t Value;
|
2024-05-13 08:08:47 +00:00
|
|
|
|
} Flag; // IO状态
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
rt_uint8_t InputType; // 输入类型
|
|
|
|
|
|
rt_uint8_t Key; // 键值
|
|
|
|
|
|
} Out; // 输出IO状态
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
2024-05-17 07:00:05 +00:00
|
|
|
|
Out IO_Out[8]; // IO输出端口状态
|
|
|
|
|
|
Data IO_Data[8]; // IO当前数据
|
2024-05-13 08:08:47 +00:00
|
|
|
|
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);
|
|
|
|
|
|
|
2024-05-17 07:00:05 +00:00
|
|
|
|
//获取端口电平值
|
|
|
|
|
|
rt_uint8_t get_IO_Value();
|
|
|
|
|
|
|
|
|
|
|
|
rt_uint8_t get_IO_NeedleCountUpdateFlag();
|
2024-07-12 08:22:49 +00:00
|
|
|
|
void set_IO_NeedleCountUpdateFlag(rt_uint8_t flag);
|
2024-05-17 07:00:05 +00:00
|
|
|
|
void set_IO_Needle_io(rt_uint8_t io);
|
2024-05-13 08:08:47 +00:00
|
|
|
|
//控制台更改电平
|
|
|
|
|
|
void IO_key();
|
2024-05-17 07:00:05 +00:00
|
|
|
|
|
|
|
|
|
|
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);
|
2024-05-13 08:08:47 +00:00
|
|
|
|
#endif /* APPLICATIONS_IO_INOUT_H_ */
|