mirror of
https://github.com/No-Chicken/Power-Pico.git
synced 2026-04-03 13:02:36 +08:00
144 lines
3.3 KiB
C
144 lines
3.3 KiB
C
/* Private includes -----------------------------------------------------------*/
|
|
//includes
|
|
#include "user_TasksInit.h"
|
|
//sys
|
|
#include "sys.h"
|
|
#include "stdio.h"
|
|
|
|
//gui
|
|
#include "lvgl.h"
|
|
#include "PageManager.h"
|
|
|
|
//tasks
|
|
#include "user_HardwareInitTask.h"
|
|
#include "user_PDUFPTask.h"
|
|
#include "user_KeyTask.h"
|
|
#include "user_MessageTask.h"
|
|
|
|
/* 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,
|
|
.priority = (osPriority_t) osPriorityHigh,
|
|
};
|
|
|
|
// message task
|
|
osThreadId_t MessageTaskHandle;
|
|
const osThreadAttr_t MessageTask_attributes = {
|
|
.name = "MessageTask",
|
|
.stack_size = 128 * 1,
|
|
.priority = (osPriority_t) osPriorityNormal2,
|
|
};
|
|
|
|
// Key task
|
|
osThreadId_t KeyTaskHandle;
|
|
const osThreadAttr_t KeyTask_attributes = {
|
|
.name = "KeyTask",
|
|
.stack_size = 128 * 1,
|
|
.priority = (osPriority_t) osPriorityNormal,
|
|
};
|
|
|
|
// PDUFP task
|
|
osThreadId_t PDUFPTaskHandle;
|
|
const osThreadAttr_t PDUFPTask_attributes = {
|
|
.name = "PDUFPTask",
|
|
.stack_size = 128 * 2,
|
|
.priority = (osPriority_t) osPriorityLow2,
|
|
};
|
|
|
|
// LVGL Handler task
|
|
osThreadId_t LvHandlerTaskHandle;
|
|
const osThreadAttr_t LvHandlerTask_attributes = {
|
|
.name = "LvHandlerTask",
|
|
.stack_size = 128 * 24,
|
|
.priority = (osPriority_t) osPriorityLow,
|
|
};
|
|
|
|
|
|
/* 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, ... */
|
|
Key_MessageQueue = osMessageQueueNew(4, 1, NULL);
|
|
|
|
/* add threads, ... */
|
|
HardwareInitTaskHandle = osThreadNew(HardwareInitTask, NULL, &HardwareInitTask_attributes);
|
|
// PDUFPTaskHandle = osThreadNew(PDUFPTask, NULL, &PDUFPTask_attributes);
|
|
KeyTaskHandle = osThreadNew(KeyTask, NULL, &KeyTask_attributes);
|
|
MessageTaskHandle = osThreadNew(MessageTask, NULL, &MessageTask_attributes);
|
|
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)
|
|
{
|
|
uint8_t keystr = 0;
|
|
while(1)
|
|
{
|
|
if(osMessageQueueGet(Key_MessageQueue, &keystr, NULL, 1)==osOK) {
|
|
PageManager_handle_key_event(keystr);
|
|
}
|
|
lv_task_handler();
|
|
osDelay(1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|