您尚未登录。

#2 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » 在GD32F450使用freertos为lvgl配置心跳和任务管理器 » 2021-10-12 14:29:39

附上代码:

void vApplicationTickHook()
{
	// 告诉lvgl已经过去了1毫秒
	lv_tick_inc(1);
}

//lvgl任务
#define LVGL_TASK_HANDLER_PRIORITY 		(tskIDLE_PRIORITY + 3)	// lvgl task handel
#define LVGL_TASK_HANDLER_STACK_SIZE 	(512)
//开始任务
#define START_TASK_PRIO		1
#define START_STK_SIZE 		128  
TaskHandle_t StartTask_Handler;
void start_task(void *pvParameters);
//
#define Deskettok_TASK_PRIO		2
#define Deskettop_STK_SIZE		128
TaskHandle_t Deskettop_Handler;
void Deskettop(void *pvParameters);


int main(){

	
    __set_PRIMASK(1); 
    nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);
    systick_config();
    rtc_pre_config();
    sdram_init();
    lcd_init();
    //timer_config();
    lv_init();
    lv_port_disp_init();
    lv_port_indev_init();

             xTaskCreate((TaskFunction_t )start_task,    //任务函数
				(const char*    )"start_task",          //任务名称
				(uint16_t       )START_STK_SIZE,        //任务堆栈大小
				(void*          )NULL,                  //传递给任务函数的参数(形參)
				(UBaseType_t    )START_TASK_PRIO,       //任务优先级
				(TaskHandle_t*  )&StartTask_Handler);   //任务句柄  
	//开启任务调度				
	vTaskStartScheduler();
				while (1){

				}
}

void start_task(void *pvParameters)
{
    taskENTER_CRITICAL();           //进入临界区
	
    //创建TASK1任务
							
		xTaskCreate((TaskFunction_t )Deskettop,
					(const char*	)"Deskettop",
					(uint16_t			)Deskettop_STK_SIZE,
					(void*				)NULL,
					(UBaseType_t	)Deskettok_TASK_PRIO,
					(TaskHandle_t*)&Deskettop_Handler);

    vTaskDelete(StartTask_Handler); //删除开始任务
				
    taskEXIT_CRITICAL();            //退出临界区
}


void Deskettop(void *pvParameters)
{

	lv_ex_spinner_2();
	while (1)
	{

		lv_task_handler();

	}
}


static portTASK_FUNCTION( lv_100ask_task_handler, pvParameters )
{
	TickType_t xLastWakeTime;
	const TickType_t xPeriod = pdMS_TO_TICKS( 5 );
	
	// 使用当前时间初始化变量xLastWakeTime ,注意这和vTaskDelay()函数不同 
	xLastWakeTime = xTaskGetTickCount();  
	
	for(;;)
	{		
		/* 调用系统延时函数,周期性阻塞5ms */    
		vTaskDelayUntil( &xLastWakeTime,xPeriod );
		lv_task_handler();
	}
	vTaskDelete(NULL);
}

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn