Files
Power-Pico/Power_Pico/User/Tasks/Src/user_TasksInit.c

147 lines
3.3 KiB
C
Raw Normal View History

2025-08-05 16:06:46 +08:00
/* Private includes -----------------------------------------------------------*/
//includes
#include "user_TasksInit.h"
//sys
#include "sys.h"
#include "stdio.h"
2025-12-02 19:23:20 +08:00
//bsp
#include "key.h"
2025-08-05 16:06:46 +08:00
//gui
#include "lvgl.h"
2025-11-26 19:16:32 +08:00
#include "lv_lib_pm.h"
2025-08-05 16:06:46 +08:00
//tasks
#include "user_HardwareInitTask.h"
2025-10-14 16:24:47 +08:00
#include "user_PDUFPTask.h"
2025-08-12 18:47:22 +08:00
#include "user_KeyTask.h"
2025-10-19 11:58:49 +08:00
#include "user_MessageTask.h"
2025-08-05 16:06:46 +08:00
/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
/* Timers --------------------------------------------------------------------*/
osTimerId_t IdleTimerHandle;
/* Tasks ---------------------------------------------------------------------*/
// Hardwares initialization
osThreadId_t HardwareInitTaskHandle;
const osThreadAttr_t HardwareInitTask_attributes = {
.name = "HardwareInitTask",
.stack_size = 128 * 10,
2025-11-25 19:58:08 +08:00
.priority = (osPriority_t) osPriorityHigh,
2025-08-05 16:06:46 +08:00
};
2025-11-25 19:58:08 +08:00
// message task
osThreadId_t MessageTaskHandle;
const osThreadAttr_t MessageTask_attributes = {
.name = "MessageTask",
.stack_size = 128 * 1,
.priority = (osPriority_t) osPriorityNormal2,
2025-08-05 16:06:46 +08:00
};
2025-11-25 19:58:08 +08:00
// Key task
2025-08-05 16:06:46 +08:00
osThreadId_t KeyTaskHandle;
const osThreadAttr_t KeyTask_attributes = {
.name = "KeyTask",
.stack_size = 128 * 1,
.priority = (osPriority_t) osPriorityNormal,
};
2025-11-25 19:58:08 +08:00
// PDUFP task
osThreadId_t PDUFPTaskHandle;
const osThreadAttr_t PDUFPTask_attributes = {
.name = "PDUFPTask",
.stack_size = 128 * 2,
.priority = (osPriority_t) osPriorityLow2,
2025-10-19 11:58:49 +08:00
};
2025-11-25 19:58:08 +08:00
// LVGL Handler task
2025-08-12 18:47:22 +08:00
osThreadId_t LvHandlerTaskHandle;
const osThreadAttr_t LvHandlerTask_attributes = {
.name = "LvHandlerTask",
.stack_size = 128 * 24,
.priority = (osPriority_t) osPriorityLow,
};
2025-08-05 16:06:46 +08:00
/* Message queues ------------------------------------------------------------*/
//Key message
osMessageQueueId_t Key_MessageQueue;
/* Private function prototypes -----------------------------------------------*/
void LvHandlerTask(void *argument);
/**
* @brief FreeRTOS initialization
* @param None
* @retval None
*/
void User_Tasks_Init(void)
{
/* add mutexes, ... */
/* add semaphores, ... */
/* start timers, add new ones, ... */
/* add queues, ... */
2025-12-02 19:23:20 +08:00
Key_MessageQueue = osMessageQueueNew(4, sizeof(key_event_t), NULL);
2025-08-05 16:06:46 +08:00
/* add threads, ... */
HardwareInitTaskHandle = osThreadNew(HardwareInitTask, NULL, &HardwareInitTask_attributes);
2025-10-14 16:24:47 +08:00
// PDUFPTaskHandle = osThreadNew(PDUFPTask, NULL, &PDUFPTask_attributes);
2025-08-12 18:47:22 +08:00
KeyTaskHandle = osThreadNew(KeyTask, NULL, &KeyTask_attributes);
2025-10-19 11:58:49 +08:00
MessageTaskHandle = osThreadNew(MessageTask, NULL, &MessageTask_attributes);
2025-08-05 16:06:46 +08:00
LvHandlerTaskHandle = osThreadNew(LvHandlerTask, NULL, &LvHandlerTask_attributes);
/* add events, ... */
/* add others ... */
}
/**
* @brief FreeRTOS Tick Hook, to increase the LVGL tick
* @param None
* @retval None
*/
void TaskTickHook(void)
{
//to increase the LVGL tick
lv_tick_inc(1);
}
/**
* @brief LVGL Handler task, to run the lvgl
* @param argument: Not used
* @retval None
*/
void LvHandlerTask(void *argument)
{
2025-12-02 19:23:20 +08:00
key_event_t key_event;
2025-08-05 16:06:46 +08:00
while(1)
{
2025-12-02 19:23:20 +08:00
if(osMessageQueueGet(Key_MessageQueue, &key_event, NULL, 1)==osOK) {
lv_lib_pm_handle_key_event(&key_event);
2025-10-07 10:30:37 +08:00
}
2025-08-05 16:06:46 +08:00
lv_task_handler();
osDelay(1);
}
}