整定一版

This commit is contained in:
冯佳
2025-12-19 17:01:27 +08:00
parent 294a49f207
commit 8bddc34c88
43 changed files with 7273 additions and 956 deletions

111
port/menu_port.h Normal file
View File

@ -0,0 +1,111 @@
/**
**********************************************************************************************************************
* @file menu_port.h
* @brief 菜单组件硬件端口层定义
* @author menu_component
* @date 2025-12-19
**********************************************************************************************************************
*/
#ifndef MENU_PORT_H
#define MENU_PORT_H
/* Includes ----------------------------------------------------------------------------------------------------------*/
#include "../src/core/menu_config.h"
#include <stdarg.h>
/* 类型定义 ---------------------------------------------------------------------------------------------------------*/
/**
* @brief Modbus寄存器类型
*/
typedef enum {
MODBUS_REG_TYPE_COIL, /*!< 线圈寄存器 */
MODBUS_REG_TYPE_DISCRETE_INPUT, /*!< 离散输入寄存器 */
MODBUS_REG_TYPE_HOLDING_REG, /*!< 保持寄存器 */
MODBUS_REG_TYPE_INPUT_REG, /*!< 输入寄存器 */
} ModbusRegType;
/**
* @brief 持久化操作回调函数类型定义
*/
typedef MenuErrCode (*MenuPersistenceSaveCallback)(const uint8_t* data, uint16_t size); ///< 保存持久化数据回调
typedef MenuErrCode (*MenuPersistenceRestoreCallback)(uint8_t* data, uint16_t* size); ///< 恢复持久化数据回调
/**
* @brief 硬件驱动结构体
*/
typedef struct {
void (*printf)(const char* fmt, va_list args); ///< 硬件打印接口
uint32_t (*get_tick)(void); ///< 获取系统滴答时间
void (*delay_ms)(uint32_t ms); ///< 硬件延迟函数
void (*display)(const char* menu_name, uint16_t menu_id); ///< 菜单显示接口
MenuEventType (*key_scan)(void); ///< 按键扫描接口(可选)
void (*irq_ctrl)(bool enable); ///< 中断管理接口(可选)
void (*error_handler)(MenuErrCode err_code); ///< 错误处理接口(可选)
MenuErrCode (*modbus_send)(ModbusRegType reg_type, uint16_t reg_addr, const uint8_t* reg_buf, uint8_t buf_len); ///< Modbus发送接口可选
MenuErrCode (*modbus_receive)(ModbusRegType reg_type, uint16_t reg_addr, uint8_t* reg_buf, uint8_t buf_len); ///< Modbus接收接口可选
MenuPersistenceSaveCallback persistence_save; ///< 持久化数据保存接口(可选)
MenuPersistenceRestoreCallback persistence_restore; ///< 持久化数据恢复接口(可选)
} MenuPortDriver;
/* 函数声明 ---------------------------------------------------------------------------------------------------------*/
/**
* @brief 初始化硬件端口层
* @param driver 硬件驱动结构体指针
* @return 错误码
*/
MenuErrCode menu_port_init(const MenuPortDriver* driver);
/**
* @brief 反初始化硬件端口层
* @return 错误码
*/
MenuErrCode menu_port_deinit(void);
/**
* @brief 获取当前系统时间ms
* @return 系统时间ms
*/
uint32_t menu_port_get_tick(void);
/**
* @brief 硬件延迟函数
* @param ms 延迟时间ms
*/
void menu_port_delay_ms(uint32_t ms);
/**
* @brief 打印函数
* @param fmt 格式化字符串
* @param ... 可变参数
*/
void menu_port_printf(const char* fmt, ...);
/**
* @brief 菜单显示函数
* @param menu_name 菜单名称
* @param menu_id 菜单ID
*/
void menu_port_display(const char* menu_name, uint16_t menu_id);
/**
* @brief 按键扫描函数
* @return 按键事件类型
*/
MenuEventType menu_port_key_scan(void);
/**
* @brief 中断管理函数
* @param enable 是否启用中断
*/
void menu_port_irq_ctrl(bool enable);
/**
* @brief 错误处理函数
* @param err_code 错误码
*/
void menu_port_error_handler(MenuErrCode err_code);
#endif /* MENU_PORT_H */