1.添加了必要的注释和readme文件以提高代码可读性和项目文档化。2.增加了按键按下时LCD屏幕显示功能
This commit is contained in:
@@ -1,35 +1,86 @@
|
||||
/******************************************************************************
|
||||
* @file key.h
|
||||
* @brief 按键驱动模块头文件
|
||||
* @details 本文件定义了按键驱动的接口和数据结构,包括按键类型枚举、
|
||||
* 按键回调函数类型定义以及外部接口函数声明。
|
||||
* @author 阜阳师范大学物电学院
|
||||
* @version V0.1
|
||||
* @date 2026.1.19
|
||||
* @note 依赖库: MultiButton
|
||||
* 使用方式:
|
||||
* 1. 调用 Key_Init() 初始化按键硬件
|
||||
* 2. 调用 Key_RegisterCallback() 注册按键回调函数
|
||||
* 3. 在定时器中调用 Button_Ticks() 进行按键扫描
|
||||
******************************************************************************/
|
||||
|
||||
#ifndef __KEY_H__
|
||||
#define __KEY_H__
|
||||
|
||||
|
||||
|
||||
#include "./SYSTEM/sys/sys.h"
|
||||
#include "MultiButton.h"
|
||||
|
||||
/* ============================================================================
|
||||
* 按键类型枚举定义
|
||||
* ============================================================================ */
|
||||
/**
|
||||
* @brief 按键类型枚举
|
||||
* @details 定义了系统中所有支持的按键类型
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
KEY_NONE = 0, // 没有按键
|
||||
|
||||
KEY_ENTER, // 确认
|
||||
KEY_UP, // 向上
|
||||
KEY_DOWN, // 向下
|
||||
KEY_ESC, //取消
|
||||
KEY_ADD, //加
|
||||
KEY_DEC, //减
|
||||
KEY_LEFT, //左
|
||||
KEY_RIGHT, //右
|
||||
KEY_RESET, //复位
|
||||
KEY_FACTORY, //工厂
|
||||
KEY_NONE = 0, /**< 无按键按下 */
|
||||
KEY_ENTER, /**< 确认键 */
|
||||
KEY_UP, /**< 向上键 */
|
||||
KEY_DOWN, /**< 向下键 */
|
||||
KEY_ESC, /**< 取消键 */
|
||||
KEY_ADD, /**< 加键 */
|
||||
KEY_DEC, /**< 减键 */
|
||||
KEY_LEFT, /**< 向左键 */
|
||||
KEY_RIGHT, /**< 向右键 */
|
||||
KEY_RESET, /**< 复位键 */
|
||||
KEY_FACTORY, /**< 工厂模式键 */
|
||||
} KEY_TYPE;
|
||||
|
||||
// 按键回调函数类型定义(业务逻辑层使用)
|
||||
// 参数: key_type - 按键类型
|
||||
/* ============================================================================
|
||||
* 回调函数类型定义
|
||||
* ============================================================================ */
|
||||
/**
|
||||
* @brief 按键回调函数类型定义
|
||||
* @param key_type 按键类型(KEY_TYPE 枚举值)
|
||||
* @note 业务逻辑层需要实现此类型的回调函数,用于处理按键事件
|
||||
* 当检测到按键按下时,会调用注册的回调函数
|
||||
* @retval 无
|
||||
*/
|
||||
typedef void (*KeyCallback)(KEY_TYPE key_type);
|
||||
|
||||
/* ============================================================================
|
||||
* 外部接口函数声明
|
||||
* ============================================================================ */
|
||||
|
||||
/**
|
||||
* @brief 按键硬件初始化函数
|
||||
* @note 初始化所有按键的 GPIO 配置和 MultiButton 库
|
||||
* 特殊处理:禁用 JTAG 以释放 PB3 等引脚
|
||||
* 必须在系统初始化时调用一次
|
||||
* @retval 无
|
||||
*/
|
||||
void Key_Init(void);
|
||||
|
||||
// 按键驱动函数(在key.c中实现,使用MultiButton库)
|
||||
void Key_Init(void); // 按键初始化
|
||||
void Key_RegisterCallback(KeyCallback callback); // 注册按键回调函数(业务逻辑层调用)
|
||||
#define Button_Ticks() button_ticks()
|
||||
#endif
|
||||
/**
|
||||
* @brief 注册按键回调函数(供业务逻辑层调用)
|
||||
* @param callback 按键回调函数指针,当检测到按键事件时会调用此函数
|
||||
* @note 业务逻辑层通过此函数注册按键处理回调
|
||||
* 如果传入 NULL,则取消已注册的回调函数
|
||||
* @retval 无
|
||||
*/
|
||||
void Key_RegisterCallback(KeyCallback callback);
|
||||
|
||||
/**
|
||||
* @brief MultiButton 库的按键扫描函数宏定义
|
||||
* @note 需要在定时器中周期性调用此函数(建议 5-10ms 调用一次)
|
||||
* 用于 MultiButton 库进行按键状态扫描和事件检测
|
||||
* @retval 无
|
||||
*/
|
||||
#define Button_Ticks() button_ticks()
|
||||
|
||||
#endif /* __KEY_H__ */
|
||||
|
||||
Reference in New Issue
Block a user