根据实际电路版修改对应引脚,LED KEY LCD 正常运行
This commit is contained in:
@@ -19,14 +19,6 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
/* ============================================================================
|
||||
* 编译选项配置
|
||||
* ============================================================================ */
|
||||
//#define STATIC_BOX /**< 静态框显示模式(已注释) */
|
||||
#define DYNAMIC_BOX /**< 动态框显示模式 */
|
||||
#define TEST_DELAY_TIME 600 /**< 测试延时时间(单位:毫秒) */
|
||||
#define VERSION_CODE "Ver0.05(XRD)" /**< 版本号字符串 */
|
||||
|
||||
/* ============================================================================
|
||||
* LCD偏置电压配置宏定义
|
||||
* ============================================================================ */
|
||||
@@ -146,12 +138,13 @@
|
||||
#define UC1698U_RST_L() do{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET);}while(0)
|
||||
|
||||
/** @brief 设置背光引脚为关闭 */
|
||||
#define LCD_BackLight_OFF() do{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);}while(0)
|
||||
#define LCD_BackLight_OFF() do{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);}while(0)
|
||||
|
||||
/** @brief 设置背光引脚为打开 */
|
||||
#define LCD_BackLight_ON() do{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);}while(0)
|
||||
#define LCD_BackLight_ON() do{HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);}while(0)
|
||||
|
||||
volatile static uint32_t BackLightCount = 0;
|
||||
#define BackLightTimeMax (20000) //五分钟
|
||||
#define BackLightTimeMax (20000) /* 100s */
|
||||
|
||||
/**
|
||||
* @brief 背光处理函数
|
||||
@@ -1326,7 +1319,30 @@ void FillBoxScreen(uint8_t x, uint8_t y, uint8_t len, uint8_t high, uint8_t byte
|
||||
y++; /* 移动到下一行 */
|
||||
}
|
||||
}
|
||||
void LCD_GPIO_Init(void)
|
||||
{
|
||||
GPIO_InitTypeDef gpio_init_struct;
|
||||
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE(); // 时钟初始化
|
||||
__HAL_RCC_GPIOE_CLK_ENABLE(); // 时钟初始化
|
||||
|
||||
|
||||
// 配置 LCD 引脚
|
||||
gpio_init_struct.Pin = GPIO_PIN_14 | GPIO_PIN_13 | GPIO_PIN_12 | GPIO_PIN_11 | GPIO_PIN_10 | GPIO_PIN_0;
|
||||
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /*推挽输出模式*/
|
||||
gpio_init_struct.Pull = GPIO_PULLUP;
|
||||
gpio_init_struct.Speed = GPIO_SPEED_HIGH;
|
||||
// 初始化 LCD 选引脚
|
||||
HAL_GPIO_Init(GPIOB, &gpio_init_struct);
|
||||
|
||||
// 配置 LCD 引脚
|
||||
gpio_init_struct.Pin = GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;
|
||||
gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP; /*推挽输出模式*/
|
||||
gpio_init_struct.Pull = GPIO_PULLUP;
|
||||
gpio_init_struct.Speed = GPIO_SPEED_HIGH;
|
||||
// 初始化 LCD 选引脚
|
||||
HAL_GPIO_Init(GPIOE, &gpio_init_struct);
|
||||
}
|
||||
/**
|
||||
* @brief LCD初始化总函数
|
||||
* @note 执行LCD初始化的完整流程:
|
||||
@@ -1337,6 +1353,8 @@ void FillBoxScreen(uint8_t x, uint8_t y, uint8_t len, uint8_t high, uint8_t byte
|
||||
*/
|
||||
void LcdInit(void)
|
||||
{
|
||||
LCD_GPIO_Init();
|
||||
LCD_BackLight_ON();
|
||||
LCD_Reset(); /* 硬件复位 */
|
||||
LCD_InitXRD(); /* 初始化配置(XRD版本) */
|
||||
ClearScreen(); /* 清屏 */
|
||||
@@ -1647,22 +1665,6 @@ void DrawPoint(uint8_t x, uint8_t y)
|
||||
DisplayVerticalLine(x + 1, y + 4, 1, 0x60);
|
||||
DisplayHorizontalLine(x + 1, y + 5, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 擦除线条(内部函数,用于动态框效果)
|
||||
* @param x 起始列坐标(X坐标)
|
||||
* @param y 起始行坐标(Y坐标)
|
||||
* @param len 线条长度(像素单位)
|
||||
* @param high 线条高度(行数)
|
||||
* @note 擦除指定区域的线条,用于实现动态框的擦除效果
|
||||
* 擦除底部3行和右侧1列
|
||||
* @retval 无
|
||||
*/
|
||||
static void EraseLine(uint8_t x, uint8_t y, uint8_t len, uint8_t high)
|
||||
{
|
||||
FillBoxScreen(x, y + high, len + 1, 3, 0x00); /* 擦除底部3行 */
|
||||
FillBoxScreen(x + len, y, 1, high + 1, 0x00); /* 擦除右侧1列 */
|
||||
}
|
||||
/**
|
||||
* @brief 显示消息提示框(静态模式)
|
||||
* @note 在屏幕指定位置显示一个带阴影的消息提示框
|
||||
|
||||
@@ -144,7 +144,7 @@ static void button_handler(Button* handle)
|
||||
// Level not changed, reset counter
|
||||
handle->debounce_cnt = 0;
|
||||
}
|
||||
|
||||
|
||||
/*-----------------State machine-------------------*/
|
||||
switch (handle->state) {
|
||||
case BTN_STATE_IDLE:
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
|
||||
#include "key.h"
|
||||
|
||||
#include "160160D.h"
|
||||
|
||||
// 按键配置结构体
|
||||
typedef struct {
|
||||
@@ -37,17 +37,16 @@ typedef struct {
|
||||
*/
|
||||
// 按键配置表
|
||||
static const KeyConfig_t key_configs[] = {
|
||||
{15, GPIOB, KEY_ENTER},
|
||||
{11, GPIOD, KEY_UP},
|
||||
{10, GPIOD, KEY_DOWN},
|
||||
{13, GPIOD, KEY_LEFT},
|
||||
{8, GPIOD, KEY_RIGHT},
|
||||
{12, GPIOD, KEY_ESC},
|
||||
{14, GPIOD, KEY_ADD},
|
||||
{9, GPIOD, KEY_DEC},
|
||||
{15, GPIOD, KEY_RESET},
|
||||
{GPIO_PIN_12, GPIOD, KEY_ENTER},
|
||||
{GPIO_PIN_11, GPIOD, KEY_UP},
|
||||
{GPIO_PIN_10, GPIOD, KEY_DOWN},
|
||||
{GPIO_PIN_13, GPIOD, KEY_LEFT},
|
||||
{GPIO_PIN_8, GPIOD, KEY_RIGHT},
|
||||
{GPIO_PIN_15, GPIOB, KEY_ESC},
|
||||
{GPIO_PIN_3, GPIOB, KEY_ADD},
|
||||
{GPIO_PIN_15, GPIOD, KEY_RESET},
|
||||
};
|
||||
#define KEY_COUNT (sizeof(key_configs) / sizeof(key_configs[0]))
|
||||
#define KEY_COUNT (sizeof(key_configs) / sizeof(key_configs[0]))
|
||||
|
||||
// 按键句柄数组
|
||||
static Button btn_handles[KEY_COUNT];
|
||||
@@ -62,13 +61,13 @@ static KeyCallback key_callback = NULL;
|
||||
*/
|
||||
static uint8_t button_read_level(uint8_t button_id)
|
||||
{
|
||||
uint16_t pin_bit = HAL_GPIO_ReadPin(key_configs[button_id].port, key_configs[button_id].pin);
|
||||
uint8_t pin_bit = HAL_GPIO_ReadPin(key_configs[button_id].port, key_configs[button_id].pin);
|
||||
return pin_bit;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 统一的按键回调函数(内部使用,调用业务逻辑回调)
|
||||
* @param btn 按键句柄指针
|
||||
* @param btn 按键句柄指针
|
||||
*/
|
||||
static void button_callback(Button* btn)
|
||||
{
|
||||
@@ -118,27 +117,28 @@ static void KEY_GPIO_ClockEnable(GPIO_TypeDef *port)
|
||||
**************************************************************************************/
|
||||
void Key_Init(void)
|
||||
{
|
||||
GPIO_InitTypeDef gpio_init_struct;
|
||||
/*由于使用了 PB3 才需要特殊加的*/
|
||||
__HAL_RCC_AFIO_CLK_ENABLE(); // AFIO时钟(修改AFIO寄存器前必须)
|
||||
|
||||
// 统一配置GPIO参数
|
||||
gpio_init_struct.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init_struct.Pull = GPIO_PULLUP;
|
||||
gpio_init_struct.Speed = GPIO_SPEED_HIGH;
|
||||
/* 禁用JTAG,保留SWD(PA13、PA14仍可用于调试)*/
|
||||
/* 这会释放 PA15、PB3、PB4 作为普通GPIO */
|
||||
__HAL_AFIO_REMAP_SWJ_NOJTAG();
|
||||
|
||||
|
||||
GPIO_InitTypeDef gpio_init_struct = {0};
|
||||
// 批量初始化GPIO
|
||||
for (uint8_t i = 0; i < KEY_COUNT; i++)
|
||||
{
|
||||
/* 使能对应GPIO时钟 */
|
||||
KEY_GPIO_ClockEnable(key_configs[i].port);
|
||||
|
||||
// 配置并初始化引脚
|
||||
gpio_init_struct.Pin = key_configs[i].pin;
|
||||
HAL_GPIO_Init(key_configs[i].port, &gpio_init_struct);
|
||||
}
|
||||
|
||||
// 批量初始化MultiButton按键(active_level=0表示低电平有效)
|
||||
for (uint8_t button_id = 0; button_id < KEY_COUNT; button_id++)
|
||||
{
|
||||
/* 使能对应GPIO时钟 */
|
||||
KEY_GPIO_ClockEnable(key_configs[button_id].port);
|
||||
|
||||
// 配置并初始化引脚
|
||||
gpio_init_struct.Pin = key_configs[button_id].pin;
|
||||
gpio_init_struct.Mode = GPIO_MODE_INPUT;
|
||||
gpio_init_struct.Pull = GPIO_NOPULL;
|
||||
gpio_init_struct.Speed = GPIO_SPEED_HIGH;
|
||||
HAL_GPIO_Init(key_configs[button_id].port, &gpio_init_struct);
|
||||
|
||||
button_init(&btn_handles[button_id], button_read_level, 0, button_id);
|
||||
button_attach(&btn_handles[button_id], BTN_SINGLE_CLICK, button_callback);
|
||||
button_start(&btn_handles[button_id]);
|
||||
|
||||
@@ -22,65 +22,65 @@
|
||||
* {GPIOB, GPIO_PIN_5, LED_POLARITY_HIGH_ACTIVE, GPIO_PIN_RESET, GPIO_SPEED_FREQ_MEDIUM, GPIO_NOPULL}
|
||||
* ============================================================================ */
|
||||
static const LED_Config_t led_config[LED_COUNT] = {
|
||||
/* LED1: PD6 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_6, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED2: PD5 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_5, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED3: PD4 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_4, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED4: PD3 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_3, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED5: PD2 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_2, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED6: PD1 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_1, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED7: PD0 - 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_0, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED8: PC12 - 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_12, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED9: PA12 - 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_12, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED10: PA11 - 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_11, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED11: PA10 - 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_10, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED12: PA9 - 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_9, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED13: PA8 - 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_8, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED14: PC9 - 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_9, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED15: PC8 - 低电平有效 */
|
||||
/* LED1 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_8, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED16: PC7 - 低电平有效 */
|
||||
/* LED2 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_9, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED3 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_9, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED4 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_11, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED5 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_15, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED6 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_11, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED7 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_0, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED8 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_2, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED9 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_4, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED10 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_6, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED11 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_7, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED17: PE3 - 低电平有效 */
|
||||
{GPIOE, GPIO_PIN_3, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
/* LED12 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_8, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED18: PE4 - 低电平有效 */
|
||||
{GPIOE, GPIO_PIN_4, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
/* LED13 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_10, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED19: PE2 - 低电平有效 */
|
||||
{GPIOE, GPIO_PIN_2, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
/* LED14 低电平有效 */
|
||||
{GPIOA, GPIO_PIN_12, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED20: PE5 - 低电平有效 */
|
||||
{GPIOE, GPIO_PIN_5, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
/* LED15 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_10, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED16 低电平有效 */
|
||||
{GPIOC, GPIO_PIN_12, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED17 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_1, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED18 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_3, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED19 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_5, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
|
||||
/* LED20 低电平有效 */
|
||||
{GPIOD, GPIO_PIN_7, LED_POLARITY_LOW_ACTIVE, GPIO_PIN_SET, GPIO_SPEED_FREQ_HIGH, GPIO_PULLUP},
|
||||
};
|
||||
|
||||
/* LED状态数组 - 使用枚举类型提高类型安全性 */
|
||||
|
||||
Reference in New Issue
Block a user