|
v7的freertos示例工程,并仿照lvgl template从rte添加lvgl 8.3。
直接复制lvgl template的lv_port_indev_template.c 和lv_port_disp_template.c的内容,
并调整#define configUSE_IDLE_HOOK 和#define configUSE_TICK_HOOK,分别加入bsp_idle 和 TOUCH_Scan()、lv_tick_inc(1)函数
屏幕有光,背光设置完成,但无图像,改了一上午没什么头绪
main函数内容
#include "includes.h"
#include "bsp.h" /* 底层硬件驱动 */
#include "lvgl.h"
#include "lv_port_disp_template.h"
#include "lv_port_indev_template.h"
#if LV_USE_DEMO_WIDGETS
#include "lv_demo_widgets.h"
#endif
static void vTaskTaskUserIF(void *pvParameters);
static void vTaskLED(void *pvParameters);
static void vTaskMsgPro(void *pvParameters);
static void vTaskStart(void *pvParameters);
static void vTaskLVGL(void *pvParameters);
static void AppTaskCreate (void);
static TaskHandle_t xHandleTaskUserIF = NULL;
static TaskHandle_t xHandleTaskLED = NULL;
static TaskHandle_t xHandleTaskMsgPro = NULL;
static TaskHandle_t xHandleTaskStart = NULL;
static TaskHandle_t xHandleLVGLStart = NULL;
static QueueHandle_t MutexSemaphore = NULL;
void vApplicationTickHook( void )
{
TOUCH_Scan();
lv_tick_inc(1);
}
void vApplicationIdleHook( void )
{
bsp_Idle();
}
int main(void)
{
/* HAL库,MPU,Cache,时钟等系统初始化 */
System_Init();
/* 内核开启前关闭HAL的时间基准 */
HAL_SuspendTick();
MutexSemaphore=xSemaphoreCreateMutex();
// __set_PRIMASK(1);
/* 硬件初始化 */
bsp_Init();
// vSetupSysInfoTest();
/* 创建任务 */
AppTaskCreate();
/* 启动调度,开始执行任务 */
vTaskStartScheduler();
while(1);
}
static void vTaskLED(void *pvParameters)
{
while(1)
{
bsp_LedToggle(2);
vTaskDelay(200);
}
}
static void vTaskMsgPro(void *pvParameters)
{
while(1)
{
bsp_LedToggle(3);
vTaskDelay(300);
}
}
static void vTaskStart(void *pvParameters)
{
TickType_t xLastWakeTime;
const TickType_t xFrequency = 1;
HAL_ResumeTick();
// /* 获取当前的系统时间 */
// xLastWakeTime = xTaskGetTickCount();
//
// while(1)
// {
// /* 需要周期性处理的程序,对应裸机工程调用的SysTick_ISR */
// bsp_ProPer1ms();
// vTaskDelayUntil(&xLastWakeTime, xFrequency);
// }
printf("start success");
vTaskDelete(NULL);
}
static void vTaskLVGL(void *pvParameters)
{
uint16_t ucBright;
ucBright = BRIGHT_DEFAULT;
vTaskDelay(300);
LCD_SetBackLight(ucBright);
lv_init();
lv_port_disp_init();
lv_port_indev_init();
lv_demo_widgets();
while(1)
{
xSemaphoreTake(MutexSemaphore,portMAX_DELAY);
lv_task_handler();
xSemaphoreGive(MutexSemaphore);
vTaskDelay(5);
}
}
*/
static void AppTaskCreate (void)
{
// xTaskCreate( vTaskTaskUserIF, /* 任务函数 */
// "vTaskUserIF", /* 任务名 */
// 512, /* 任务栈大小,单位word,也就是4字节 */
// NULL, /* 任务参数 */
// 1, /* 任务优先级*/
// &xHandleTaskUserIF ); /* 任务句柄 */
xTaskCreate( vTaskLED, /* 任务函数 */
"vTaskLED", /* 任务名 */
512, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
2, /* 任务优先级*/
&xHandleTaskLED ); /* 任务句柄 */
xTaskCreate( vTaskMsgPro, /* 任务函数 */
"vTaskMsgPro", /* 任务名 */
512, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
3, /* 任务优先级*/
&xHandleTaskMsgPro ); /* 任务句柄 */
xTaskCreate( vTaskStart, /* 任务函数 */
"vTaskStart", /* 任务名 */
512, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
4, /* 任务优先级*/
&xHandleTaskStart ); /* 任务句柄 */
xTaskCreate( vTaskLVGL, /* 任务函数 */
"vTaskLVGL", /* 任务名 */
128*48, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
4, /* 任务优先级*/
&xHandleLVGLStart ); /* 任务句柄 */
}
问题可能出在哪里?刚开始学,还请不吝赐教
|
|