1. 完成了PWR按键相关的测试,测试通过

2. 完成了语言识别测试,测试基本通过,后续需要修改从sd卡导入模型以配合ota
This commit is contained in:
Misaki
2025-09-01 00:11:00 +08:00
parent f13bb5a230
commit ce0998c1c6
17 changed files with 980 additions and 60 deletions
+58
View File
@@ -0,0 +1,58 @@
#include "PWR_Key.h"
static uint8_t BAT_State = 0; // 电池/电源状态标志
static uint8_t Device_State = 0; // 设备状态标志
static uint16_t Long_Press = 0; // 按键按下持续时间计数器
void PWR_Loop(void)
{
if(BAT_State){
if(!gpio_get_level(PWR_KEY_Input_PIN)){
if(BAT_State == 2){
Long_Press ++;
if(Long_Press >= Device_Sleep_Time){
if(Long_Press >= Device_Sleep_Time && Long_Press < Device_Restart_Time)
Device_State = 1;
else if(Long_Press >= Device_Restart_Time && Long_Press < Device_Shutdown_Time)
Device_State = 2;
else if(Long_Press >= Device_Shutdown_Time)
Shutdown();
}
}
}
else{
if(BAT_State == 1)
BAT_State = 2;
Long_Press = 0;
}
}
}
void Fall_Asleep(void)
{
}
void Restart(void)
{
}
void Shutdown(void)
{
gpio_set_level(PWR_Control_PIN, false);
LCD_Backlight = 0;
}
void configure_GPIO(int pin, gpio_mode_t Mode)
{
gpio_reset_pin(pin);
gpio_set_direction(pin, Mode);
}
void PWR_Init(void) {
configure_GPIO(PWR_KEY_Input_PIN, GPIO_MODE_INPUT);
configure_GPIO(PWR_Control_PIN, GPIO_MODE_OUTPUT);
gpio_set_level(PWR_Control_PIN, false);
vTaskDelay(100);
if(!gpio_get_level(PWR_KEY_Input_PIN)) {
BAT_State = 1;
gpio_set_level(PWR_Control_PIN, true);
}
}
+16
View File
@@ -0,0 +1,16 @@
#pragma once
#include "ST77916.h"
#define PWR_KEY_Input_PIN 6 // 电源按键输入引脚(GPIO6)
#define PWR_Control_PIN 7 // 电源控制输出引脚(GPIO7)
#define Device_Sleep_Time 10 // 进入睡眠模式的按键时长阈值
#define Device_Restart_Time 15 // 重启设备的按键时长阈值
#define Device_Shutdown_Time 20 // 关机操作的按键时长阈值
void Fall_Asleep(void);
void Shutdown(void);
void Restart(void);
void PWR_Init(void);
void PWR_Loop(void);