Files
chrg/apps/chrg/applications/bsp/chrg_gpio.h
T
2025-11-18 00:40:02 +08:00

148 lines
4.4 KiB
C

/****************************************************************************
文件名称 : chrg_gpio.h
完成日期 :
当前版本号 : V1.0
主要功能 :
GPIO口宏定义。
版本历史 : 创建原始版本
说明 :
******************************************************************************/
#ifndef __CHRG_GPIO_H__
#define __CHRG_GPIO_H__
#include <rtthread.h>
#include <drv_gpio.h>
// LED 灯脚
#define GPO_PIN_LED1 GET_PIN(C, 13) // LED1
#define GPO_PIN_LED2 GET_PIN(C, 14) // LED2
#define GPO_PIN_LED3 GET_PIN(C, 15) // LED3
// 北向 source/sink 通信口选通
#define GPO_PIN_UART_SW1 GET_PIN(C, 0) // 通道1组
#define GPO_PIN_UART_SW2 GET_PIN(A, 0) // 通道2组
#define GPO_PIN_UART_SW3 GET_PIN(A, 6) // 通道3组
#define GPO_PIN_UART_SW4 GET_PIN(B, 12) // 通道4组
// 北向继电器1组
#define GPO_PIN_CH1_P0 GET_PIN(C, 3) // P0 connect K1/K3 for sink
#define GPO_PIN_CH1_P1 GET_PIN(C, 2) // P1 connect K2/K4 for source
#define GPO_PIN_CH1_P2 GET_PIN(C, 1) // P2 connect K5 for GND/PGND
// 北向继电器2组
#define GPO_PIN_CH2_P0 GET_PIN(A, 5) // P0
#define GPO_PIN_CH2_P1 GET_PIN(A, 4) // P1
#define GPO_PIN_CH2_P2 GET_PIN(A, 1) // P2
// 北向继电器3组
#define GPO_PIN_CH3_P0 GET_PIN(C, 5) // P0
#define GPO_PIN_CH3_P1 GET_PIN(C, 4) // P1
#define GPO_PIN_CH3_P2 GET_PIN(A, 7) // P2
// 北向继电器4组
#define GPO_PIN_CH4_P0 GET_PIN(B, 15) // P0
#define GPO_PIN_CH4_P1 GET_PIN(B, 14) // P1
#define GPO_PIN_CH4_P2 GET_PIN(B, 13) // P2
// 北向通信口选通 U14
#define GPO_PIN_NOR_SW_A GET_PIN(B, 0)
#define GPO_PIN_NOR_SW_B GET_PIN(B, 1)
// 南向1级通信口选通 U23
#define GPO_PIN_SOU_SW_LV1_A GET_PIN(C, 8)
#define GPO_PIN_SOU_SW_LV1_B GET_PIN(C, 9)
// 南向2级通信口选通 左半 U24
#define GPO_PIN_SOU_SW_LV2_A1 GET_PIN(A, 15)
#define GPO_PIN_SOU_SW_LV2_B1 GET_PIN(C, 10)
// 南向2级通信口选通 右半 U25
#define GPO_PIN_SOU_SW_LV2_A2 GET_PIN(C, 11)
#define GPO_PIN_SOU_SW_LV2_B2 GET_PIN(C, 12)
typedef enum {
IDX_GPO_LED1 = 0, // 绿灯
IDX_GPO_LED2,
IDX_GPO_LED3,
IDX_GPO_UART_SW1, // source/sink U1 A
IDX_GPO_UART_SW2, // source/sink U12 A
IDX_GPO_UART_SW3, // source/sink U23 A
IDX_GPO_UART_SW4, // source/sink U34 A
IDX_GPO_CH1_P0, // 继电器1组 K1/K3
IDX_GPO_CH1_P1, // 继电器1组 K2/K4
IDX_GPO_CH1_P2, // 继电器1组 K5
IDX_GPO_CH2_P0, // 继电器2组 K1/K3
IDX_GPO_CH2_P1, // 继电器2组 K2/K4
IDX_GPO_CH2_P2, // 继电器2组 K5
IDX_GPO_CH3_P0, // 继电器3组 K1/K3
IDX_GPO_CH3_P1, // 继电器3组 K2/K4
IDX_GPO_CH3_P2, // 继电器3组 K5
IDX_GPO_CH4_P0, // 继电器4组 K1/K3
IDX_GPO_CH4_P1, // 继电器4组 K2/K4
IDX_GPO_CH4_P2, // 继电器4组 K5
IDX_GPO_NOR_SW_A, // U14 北向A
IDX_GPO_NOR_SW_B, // U14 北向B
IDX_GPO_SOU_SW_LV1_A, // U23 南向1级A
IDX_GPO_SOU_SW_LV1_B, // U23 南向1级B
IDX_GPO_SOU_SW_LV2_A1, // U24 南向2级左A
IDX_GPO_SOU_SW_LV2_B1, // U24 南向2级左B
IDX_GPO_SOU_SW_LV2_A2, // U25 南向2级右A
IDX_GPO_SOU_SW_LV2_B2, // U25 南向2级右B
TOTAL_IOS
} eIDX_IO;
struct chrg_io_t {
rt_base_t base; // 管脚号
rt_ssize_t mode; // 方向 输出/输入
rt_uint8_t value; // 当前值 (输入时不配置)
};
extern struct chrg_io_t chrgios[TOTAL_IOS];
/*****************************************************************
函数名称: chrg_gpio_mode_set
函数描述: 修改 PIN 引脚方向。
输入参数: idx 引脚索引, mode : 输出/输入
输出参数: -
返回说明: <0: 异常,=0: 正常
其它说明: -
*****************************************************************/
extern int chrg_gpio_mode_set (eIDX_IO idx, rt_uint8_t mode);
/*****************************************************************
函数名称: chrg_gpio_get
函数描述: 读取引脚当前值。
输入参数: idx 引脚索引
输出参数: -
返回说明: <0: 异常,=0: 低电平, =1: 高电平
其它说明: -
*****************************************************************/
extern int chrg_gpio_get (eIDX_IO idx);
/*****************************************************************
函数名称: chrg_gpio_set
函数描述: 设置输出引脚高低电平。
输入参数: idx 引脚索引, value 高/低电平
输出参数: -
返回说明: <0: 异常,=0: 正常
其它说明: -
*****************************************************************/
extern int chrg_gpio_set (eIDX_IO idx, rt_uint8_t value);
#endif