tft lvgl test ok

This commit is contained in:
TuxMonkey
2026-07-20 21:59:16 +08:00
parent 8928b7c7db
commit b2169513e1
766 changed files with 443311 additions and 22 deletions

View File

@@ -29,6 +29,7 @@
#include "ins_task.h"
#include "buzzer.h"
#include "tft.h"
#include "prts.h"
// #include "remoteTask.h"
//
// #include "bsp_dwt.h"
@@ -46,6 +47,8 @@
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
#define PRTS_STATUS_UPDATE_PERIOD_MS 50U
#define PRTS_TASK_SLEEP_CAP_MS 2U
/* USER CODE END PD */
@@ -158,6 +161,19 @@ const osThreadAttr_t buzzer_attributes = {
osThreadId buzzerHandle;
extern void buzzerTask(void const *argument);
static StackType_t prtsTaskStack[1024];
static StaticTask_t prtsTaskControlBlock;
const osThreadAttr_t prts_attributes = {
.name = "prts",
.cb_mem = &prtsTaskControlBlock,
.cb_size = sizeof(prtsTaskControlBlock),
.stack_mem = prtsTaskStack,
.stack_size = sizeof(prtsTaskStack),
.priority = osPriorityBelowNormal
};
osThreadId_t prtsHandle;
void StartPRTSTask(void *argument);
/* USER CODE END FunctionPrototypes */
void StartDefaultTask(void *argument);
@@ -268,6 +284,7 @@ void MX_FREERTOS_Init(void) {
// 创建线程
daemonHandle = osThreadNew(StartDaemonTask, NULL, &daemon_attributes); // <--- 换成新的函数名
buzzerHandle = osThreadNew(buzzerTask, NULL, &buzzer_attributes);
prtsHandle = osThreadNew(StartPRTSTask, NULL, &prts_attributes);
/* USER CODE END RTOS_THREADS */
/* USER CODE BEGIN RTOS_EVENTS */
@@ -289,15 +306,9 @@ __weak void StartDefaultTask(void *argument)
MX_USB_DEVICE_Init();
/* USER CODE BEGIN StartDefaultTask */
/* Infinite loop */
TFT_Init();
static uint32_t tft_refresh_tick = 0U;
for (;;)
{
if ((tft_refresh_tick++ % 100U) == 0U)
{
TFT_ShowStatus(BMI088.Temperature, RobotMode);
}
osDelay(1);
osDelay(1000);
}
/* USER CODE END StartDefaultTask */
}
@@ -479,5 +490,52 @@ __attribute__((noreturn)) void StartDaemonTask(void *argument)
// 注意:把你原来写在 freertos.c 里的那个 __weak void DaemonTask() 整个删掉,防止干扰!
__attribute__((noreturn)) void StartPRTSTask(void *argument)
{
(void) argument;
bool prts_ok = PRTS_Init();
uint32_t refresh_ms = PRTS_STATUS_UPDATE_PERIOD_MS;
if (!prts_ok)
{
TFT_Init();
}
for (;;)
{
uint32_t delay_ms = PRTS_TASK_SLEEP_CAP_MS;
if (refresh_ms >= PRTS_STATUS_UPDATE_PERIOD_MS)
{
if (prts_ok)
{
PRTS_UpdateStatus(BMI088.Temperature, RobotMode);
}
else
{
TFT_ShowStatus(BMI088.Temperature, RobotMode);
}
refresh_ms = 0U;
}
if (prts_ok)
{
delay_ms = PRTS_Task();
if (delay_ms == 0U || delay_ms > PRTS_TASK_SLEEP_CAP_MS)
{
delay_ms = PRTS_TASK_SLEEP_CAP_MS;
}
}
else
{
prts_ok = PRTS_Init();
}
osDelay(delay_ms);
refresh_ms += delay_ms;
}
}
/* USER CODE END Application */