generated from Embedded_Projects/Landzo_K60Z_LwIP
Use LVGL FS implementation, updated LCD driver, fixed FatFS config.
This commit is contained in:
parent
2e7d02458b
commit
cbc12d55ac
|
@ -118,9 +118,10 @@ set(TARGET_CFLAGS_HARDWARE "-mcpu=cortex-m4 -mthumb -mfloat-abi=soft")
|
||||||
|
|
||||||
# Conditional flags
|
# Conditional flags
|
||||||
# DEBUG
|
# DEBUG
|
||||||
set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -O1 -g")
|
set(CMAKE_C_FLAGS_DEBUG "-DDEBUG -O2 -g")
|
||||||
set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -O1 -g")
|
set(CMAKE_CXX_FLAGS_DEBUG "-DDEBUG -O2 -g")
|
||||||
set(CMAKE_ASM_FLAGS_DEBUG "-DDEBUG -O1 -g")
|
set(CMAKE_ASM_FLAGS_DEBUG "-DDEBUG -O2 -g")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "")
|
||||||
|
|
||||||
# RELEASE
|
# RELEASE
|
||||||
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -flto")
|
set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O2 -flto")
|
||||||
|
|
|
@ -247,7 +247,7 @@
|
||||||
<clock_outputs>
|
<clock_outputs>
|
||||||
<clock_output id="Bus_clock.outFreq" value="50 MHz" locked="false" accuracy=""/>
|
<clock_output id="Bus_clock.outFreq" value="50 MHz" locked="false" accuracy=""/>
|
||||||
<clock_output id="Core_clock.outFreq" value="100 MHz" locked="false" accuracy=""/>
|
<clock_output id="Core_clock.outFreq" value="100 MHz" locked="false" accuracy=""/>
|
||||||
<clock_output id="Flash_clock.outFreq" value="12.5 MHz" locked="false" accuracy=""/>
|
<clock_output id="Flash_clock.outFreq" value="25 MHz" locked="false" accuracy=""/>
|
||||||
<clock_output id="FlexBus_clock.outFreq" value="50 MHz" locked="false" accuracy=""/>
|
<clock_output id="FlexBus_clock.outFreq" value="50 MHz" locked="false" accuracy=""/>
|
||||||
<clock_output id="LPO_clock.outFreq" value="1 kHz" locked="false" accuracy=""/>
|
<clock_output id="LPO_clock.outFreq" value="1 kHz" locked="false" accuracy=""/>
|
||||||
<clock_output id="MCGFFCLK.outFreq" value="39.0625 kHz" locked="false" accuracy=""/>
|
<clock_output id="MCGFFCLK.outFreq" value="39.0625 kHz" locked="false" accuracy=""/>
|
||||||
|
@ -274,7 +274,7 @@
|
||||||
<setting id="SIM.OUTDIV1.scale" value="1" locked="true"/>
|
<setting id="SIM.OUTDIV1.scale" value="1" locked="true"/>
|
||||||
<setting id="SIM.OUTDIV2.scale" value="2" locked="false"/>
|
<setting id="SIM.OUTDIV2.scale" value="2" locked="false"/>
|
||||||
<setting id="SIM.OUTDIV3.scale" value="2" locked="false"/>
|
<setting id="SIM.OUTDIV3.scale" value="2" locked="false"/>
|
||||||
<setting id="SIM.OUTDIV4.scale" value="8" locked="false"/>
|
<setting id="SIM.OUTDIV4.scale" value="4" locked="false"/>
|
||||||
<setting id="SIM.SDHCSRCSEL.sel" value="OSC.OSCERCLK" locked="false"/>
|
<setting id="SIM.SDHCSRCSEL.sel" value="OSC.OSCERCLK" locked="false"/>
|
||||||
</clock_settings>
|
</clock_settings>
|
||||||
<called_from_default_init>true</called_from_default_init>
|
<called_from_default_init>true</called_from_default_init>
|
||||||
|
|
|
@ -133,7 +133,7 @@ called_from_default_init: true
|
||||||
outputs:
|
outputs:
|
||||||
- {id: Bus_clock.outFreq, value: 50 MHz}
|
- {id: Bus_clock.outFreq, value: 50 MHz}
|
||||||
- {id: Core_clock.outFreq, value: 100 MHz}
|
- {id: Core_clock.outFreq, value: 100 MHz}
|
||||||
- {id: Flash_clock.outFreq, value: 12.5 MHz}
|
- {id: Flash_clock.outFreq, value: 25 MHz}
|
||||||
- {id: FlexBus_clock.outFreq, value: 50 MHz}
|
- {id: FlexBus_clock.outFreq, value: 50 MHz}
|
||||||
- {id: LPO_clock.outFreq, value: 1 kHz}
|
- {id: LPO_clock.outFreq, value: 1 kHz}
|
||||||
- {id: MCGFFCLK.outFreq, value: 39.0625 kHz}
|
- {id: MCGFFCLK.outFreq, value: 39.0625 kHz}
|
||||||
|
@ -159,7 +159,7 @@ settings:
|
||||||
- {id: SIM.OUTDIV1.scale, value: '1', locked: true}
|
- {id: SIM.OUTDIV1.scale, value: '1', locked: true}
|
||||||
- {id: SIM.OUTDIV2.scale, value: '2'}
|
- {id: SIM.OUTDIV2.scale, value: '2'}
|
||||||
- {id: SIM.OUTDIV3.scale, value: '2'}
|
- {id: SIM.OUTDIV3.scale, value: '2'}
|
||||||
- {id: SIM.OUTDIV4.scale, value: '8'}
|
- {id: SIM.OUTDIV4.scale, value: '4'}
|
||||||
- {id: SIM.SDHCSRCSEL.sel, value: OSC.OSCERCLK}
|
- {id: SIM.SDHCSRCSEL.sel, value: OSC.OSCERCLK}
|
||||||
sources:
|
sources:
|
||||||
- {id: OSC.OSC.outFreq, value: 50 MHz, enabled: true}
|
- {id: OSC.OSC.outFreq, value: 50 MHz, enabled: true}
|
||||||
|
@ -191,7 +191,7 @@ const sim_clock_config_t simConfig_BOARD_BootClockRUN =
|
||||||
{
|
{
|
||||||
.pllFllSel = SIM_PLLFLLSEL_MCGFLLCLK_CLK, /* PLLFLL select: MCGFLLCLK clock */
|
.pllFllSel = SIM_PLLFLLSEL_MCGFLLCLK_CLK, /* PLLFLL select: MCGFLLCLK clock */
|
||||||
.er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK, /* OSC32KSEL select: OSC32KCLK clock */
|
.er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK, /* OSC32KSEL select: OSC32KCLK clock */
|
||||||
.clkdiv1 = 0x1170000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV2: /2, OUTDIV3: /2, OUTDIV4: /8 */
|
.clkdiv1 = 0x1130000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV2: /2, OUTDIV3: /2, OUTDIV4: /4 */
|
||||||
};
|
};
|
||||||
const osc_config_t oscConfig_BOARD_BootClockRUN =
|
const osc_config_t oscConfig_BOARD_BootClockRUN =
|
||||||
{
|
{
|
||||||
|
|
|
@ -231,7 +231,7 @@
|
||||||
/ buffer in the filesystem object (FATFS) is used for the file data transfer. */
|
/ buffer in the filesystem object (FATFS) is used for the file data transfer. */
|
||||||
|
|
||||||
|
|
||||||
#define FF_FS_EXFAT 0
|
#define FF_FS_EXFAT 1
|
||||||
/* This option switches support for exFAT filesystem. (0:Disable or 1:Enable)
|
/* This option switches support for exFAT filesystem. (0:Disable or 1:Enable)
|
||||||
/ To enable exFAT, also LFN needs to be enabled. (FF_USE_LFN >= 1)
|
/ To enable exFAT, also LFN needs to be enabled. (FF_USE_LFN >= 1)
|
||||||
/ Note that enabling exFAT discards ANSI C (C89) compatibility. */
|
/ Note that enabling exFAT discards ANSI C (C89) compatibility. */
|
||||||
|
@ -263,7 +263,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#define FF_FS_LOCK 0
|
#define FF_FS_LOCK 32
|
||||||
/* The option FF_FS_LOCK switches file lock function to control duplicated file open
|
/* The option FF_FS_LOCK switches file lock function to control duplicated file open
|
||||||
/ and illegal operation to open objects. This option must be 0 when FF_FS_READONLY
|
/ and illegal operation to open objects. This option must be 0 when FF_FS_READONLY
|
||||||
/ is 1.
|
/ is 1.
|
||||||
|
|
|
@ -18,5 +18,6 @@ epd_ret_t epd_impl_init(void *handle);
|
||||||
epd_ret_t epd_impl_write_command(void *handle, uint8_t *command, uint32_t len);
|
epd_ret_t epd_impl_write_command(void *handle, uint8_t *command, uint32_t len);
|
||||||
epd_ret_t epd_impl_write_data(void *handle, uint8_t *data, uint32_t len);
|
epd_ret_t epd_impl_write_data(void *handle, uint8_t *data, uint32_t len);
|
||||||
epd_ret_t epd_impl_reset(void *handle);
|
epd_ret_t epd_impl_reset(void *handle);
|
||||||
|
epd_ret_t epd_impl_delay(void *handle, uint32_t msec);
|
||||||
|
|
||||||
#endif
|
#endif
|
2
lib/LCD
2
lib/LCD
|
@ -1 +1 @@
|
||||||
Subproject commit 42c8727a321e6667dfabe85c7bb508a6f7a39e67
|
Subproject commit d691a7412ab130da14fc501bf69328f4df0835f8
|
|
@ -91,15 +91,16 @@ epd_ret_t epd_impl_write_data(void *handle, uint8_t *data, uint32_t len) {
|
||||||
}
|
}
|
||||||
|
|
||||||
epd_ret_t epd_impl_reset(void *handle) {
|
epd_ret_t epd_impl_reset(void *handle) {
|
||||||
uint32_t delay = CLOCK_GetCoreSysClkFreq() / 50; /* 20 msec */
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 0U);
|
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 0U);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(20));
|
||||||
for (uint32_t i = 0; i < delay; i++) {
|
|
||||||
asm("nop");
|
|
||||||
}
|
|
||||||
|
|
||||||
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 1U);
|
GPIO_WritePinOutput(BOARD_INITPINS_TFT_RESET_GPIO, BOARD_INITPINS_TFT_RESET_PIN, 1U);
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(20));
|
||||||
|
|
||||||
|
return EPD_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
epd_ret_t epd_impl_delay(void *handle, uint32_t msec) {
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(msec));
|
||||||
|
|
||||||
return EPD_OK;
|
return EPD_OK;
|
||||||
}
|
}
|
|
@ -18,8 +18,9 @@
|
||||||
|
|
||||||
#define LVGL_FS_BASE "0:/LV_ROOT/"
|
#define LVGL_FS_BASE "0:/LV_ROOT/"
|
||||||
|
|
||||||
#define LVGL_RES_HOR 240
|
#define LVGL_RES_HOR 240
|
||||||
#define LVGL_RES_VER 320
|
#define LVGL_RES_VER 320
|
||||||
|
#define LVGL_CACHE_DEPTH 20
|
||||||
|
|
||||||
SemaphoreHandle_t g_lvgl_semphr;
|
SemaphoreHandle_t g_lvgl_semphr;
|
||||||
EventGroupHandle_t g_lvgl_event_group;
|
EventGroupHandle_t g_lvgl_event_group;
|
||||||
|
@ -36,14 +37,15 @@ static lcd_generic_ssd1289_t s_lcd = {
|
||||||
.reset_cb = epd_impl_reset,
|
.reset_cb = epd_impl_reset,
|
||||||
.write_command_cb = epd_impl_write_command,
|
.write_command_cb = epd_impl_write_command,
|
||||||
.write_data_cb = epd_impl_write_data,
|
.write_data_cb = epd_impl_write_data,
|
||||||
|
.delay_cb = epd_impl_delay,
|
||||||
},
|
},
|
||||||
.dir = LCD_GENERIC_SSD1289_DIR_VERTICAL,
|
.dir = LCD_GENERIC_SSD1289_DIR_VERTICAL,
|
||||||
.mode = LCD_GENERIC_SSD1289_MODE_XBRG8888,
|
.mode = LCD_GENERIC_SSD1289_MODE_XBRG8888,
|
||||||
.user_data = &s_lcd_impl,
|
.user_data = &s_lcd_impl,
|
||||||
};
|
};
|
||||||
|
|
||||||
__attribute((section(".lvgl_buffer"))) static lv_color_t s_lvgl_buf_1[LVGL_RES_HOR * 20];
|
__attribute((section(".lvgl_buffer"))) static lv_color_t s_lvgl_buf_1[LVGL_RES_HOR * LVGL_CACHE_DEPTH];
|
||||||
__attribute((section(".lvgl_buffer"))) static lv_color_t s_lvgl_buf_2[LVGL_RES_HOR * 20];
|
__attribute((section(".lvgl_buffer"))) static lv_color_t s_lvgl_buf_2[LVGL_RES_HOR * LVGL_CACHE_DEPTH];
|
||||||
|
|
||||||
void lvgl_task(void *pvParameters);
|
void lvgl_task(void *pvParameters);
|
||||||
|
|
||||||
|
@ -74,87 +76,144 @@ static void lvgl_set_px_cb(lv_disp_drv_t *disp_drv, uint8_t *buf, lv_coord_t buf
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *lvgl_fs_open_cb(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode) {
|
static void *lvgl_fs_open_cb(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode) {
|
||||||
FIL *fp = pvPortMalloc(sizeof(FIL));
|
LV_UNUSED(drv);
|
||||||
if (fp == NULL) {
|
uint8_t flags = 0;
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
char *ff_path = pvPortMalloc(255);
|
if (mode == LV_FS_MODE_WR)
|
||||||
|
flags = FA_WRITE | FA_OPEN_ALWAYS;
|
||||||
|
else if (mode == LV_FS_MODE_RD)
|
||||||
|
flags = FA_READ;
|
||||||
|
else if (mode == (LV_FS_MODE_WR | LV_FS_MODE_RD))
|
||||||
|
flags = FA_READ | FA_WRITE | FA_OPEN_ALWAYS;
|
||||||
|
|
||||||
|
FIL *f = lv_mem_alloc(sizeof(FIL));
|
||||||
|
if (f == NULL) return NULL;
|
||||||
|
|
||||||
|
TCHAR *ff_path = lv_mem_alloc(sizeof(TCHAR) * 256);
|
||||||
if (ff_path == NULL) {
|
if (ff_path == NULL) {
|
||||||
vPortFree(fp);
|
lv_mem_free(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf(ff_path, 255, LVGL_FS_BASE "%s", path);
|
snprintf(ff_path, 256, LVGL_FS_BASE "%s", path);
|
||||||
FRESULT res = f_open(fp, ff_path, FA_READ);
|
|
||||||
if (res != FR_OK) {
|
|
||||||
vPortFree(ff_path);
|
|
||||||
vPortFree(fp);
|
|
||||||
|
|
||||||
|
FRESULT res = f_open(f, ff_path, flags);
|
||||||
|
|
||||||
|
lv_mem_free(ff_path);
|
||||||
|
|
||||||
|
if (res == FR_OK) {
|
||||||
|
return f;
|
||||||
|
} else {
|
||||||
|
lv_mem_free(f);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
vPortFree(ff_path);
|
|
||||||
|
|
||||||
return fp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_fs_res_t lvgl_fs_close_cb(lv_fs_drv_t *drv, void *file_p) {
|
static lv_fs_res_t lvgl_fs_close_cb(lv_fs_drv_t *drv, void *file_p) {
|
||||||
FIL *fp = file_p;
|
LV_UNUSED(drv);
|
||||||
|
f_close(file_p);
|
||||||
FRESULT res = f_close(fp);
|
lv_mem_free(file_p);
|
||||||
|
|
||||||
vPortFree(fp);
|
|
||||||
|
|
||||||
if (res != FR_OK) {
|
|
||||||
return LV_FS_RES_FS_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LV_FS_RES_OK;
|
return LV_FS_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_fs_res_t lvgl_fs_read_cb(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br) {
|
static lv_fs_res_t lvgl_fs_read_cb(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br) {
|
||||||
FIL *fp = file_p;
|
LV_UNUSED(drv);
|
||||||
|
FRESULT res = f_read(file_p, buf, btr, (UINT *)br);
|
||||||
|
if (res == FR_OK)
|
||||||
|
return LV_FS_RES_OK;
|
||||||
|
else
|
||||||
|
return LV_FS_RES_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
FRESULT res = f_read(fp, buf, btr, (unsigned int *)br);
|
static lv_fs_res_t lvgl_fs_write_cb(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw) {
|
||||||
if (res != FR_OK) {
|
LV_UNUSED(drv);
|
||||||
return LV_FS_RES_FS_ERR;
|
FRESULT res = f_write(file_p, buf, btw, (UINT *)bw);
|
||||||
|
if (res == FR_OK)
|
||||||
|
return LV_FS_RES_OK;
|
||||||
|
else
|
||||||
|
return LV_FS_RES_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_seek_cb(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence) {
|
||||||
|
LV_UNUSED(drv);
|
||||||
|
switch (whence) {
|
||||||
|
case LV_FS_SEEK_SET:
|
||||||
|
f_lseek(file_p, pos);
|
||||||
|
break;
|
||||||
|
case LV_FS_SEEK_CUR:
|
||||||
|
f_lseek(file_p, f_tell((FIL *)file_p) + pos);
|
||||||
|
break;
|
||||||
|
case LV_FS_SEEK_END:
|
||||||
|
f_lseek(file_p, f_size((FIL *)file_p) + pos);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
return LV_FS_RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_tell_cb(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p) {
|
||||||
|
LV_UNUSED(drv);
|
||||||
|
*pos_p = f_tell((FIL *)file_p);
|
||||||
|
return LV_FS_RES_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void *lvgl_fs_dir_open_cb(lv_fs_drv_t *drv, const char *path) {
|
||||||
|
LV_UNUSED(drv);
|
||||||
|
DIR *d = lv_mem_alloc(sizeof(DIR));
|
||||||
|
if (d == NULL) return NULL;
|
||||||
|
|
||||||
|
TCHAR *ff_path = lv_mem_alloc(sizeof(TCHAR) * 256);
|
||||||
|
if (ff_path == NULL) {
|
||||||
|
lv_mem_free(d);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(ff_path, 256, LVGL_FS_BASE "%s", path);
|
||||||
|
|
||||||
|
FRESULT res = f_opendir(d, ff_path);
|
||||||
|
|
||||||
|
lv_mem_free(ff_path);
|
||||||
|
|
||||||
|
if (res != FR_OK) {
|
||||||
|
lv_mem_free(d);
|
||||||
|
d = NULL;
|
||||||
|
}
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
|
||||||
|
static lv_fs_res_t lvgl_fs_dir_read_cb(lv_fs_drv_t *drv, void *dir_p, char *fn) {
|
||||||
|
LV_UNUSED(drv);
|
||||||
|
FRESULT res;
|
||||||
|
FILINFO fno;
|
||||||
|
fn[0] = '\0';
|
||||||
|
|
||||||
|
do {
|
||||||
|
res = f_readdir(dir_p, &fno);
|
||||||
|
if (res != FR_OK) return LV_FS_RES_UNKNOWN;
|
||||||
|
|
||||||
|
if (fno.fattrib & AM_DIR) {
|
||||||
|
fn[0] = '/';
|
||||||
|
strcpy(&fn[1], fno.fname);
|
||||||
|
} else
|
||||||
|
strcpy(fn, fno.fname);
|
||||||
|
|
||||||
|
} while (strcmp(fn, "/.") == 0 || strcmp(fn, "/..") == 0);
|
||||||
|
|
||||||
return LV_FS_RES_OK;
|
return LV_FS_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static lv_fs_res_t lvgl_fs_seek_cb(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence) {
|
static lv_fs_res_t lvgl_fs_dir_close_cb(lv_fs_drv_t *drv, void *dir_p) {
|
||||||
FRESULT res;
|
LV_UNUSED(drv);
|
||||||
|
f_closedir(dir_p);
|
||||||
FIL *fp = file_p;
|
lv_mem_free(dir_p);
|
||||||
|
|
||||||
uint32_t size = f_size(fp);
|
|
||||||
|
|
||||||
if (whence != LV_FS_SEEK_CUR) {
|
|
||||||
res = f_rewind(fp);
|
|
||||||
|
|
||||||
if (res != FR_OK) {
|
|
||||||
return LV_FS_RES_FS_ERR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (whence == LV_FS_SEEK_END) {
|
|
||||||
pos = (size - 1) - pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
res = f_lseek(fp, pos);
|
|
||||||
if (res != FR_OK) {
|
|
||||||
return LV_FS_RES_FS_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
return LV_FS_RES_OK;
|
return LV_FS_RES_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lvgl_setup(void) {
|
int lvgl_setup(void) {
|
||||||
lv_init();
|
lv_init();
|
||||||
|
|
||||||
lv_disp_draw_buf_init(&s_lvgl_disp_buf, s_lvgl_buf_1, s_lvgl_buf_2, LVGL_RES_HOR * 10);
|
lv_disp_draw_buf_init(&s_lvgl_disp_buf, s_lvgl_buf_1, s_lvgl_buf_2, LVGL_RES_HOR * LVGL_CACHE_DEPTH);
|
||||||
|
|
||||||
epd_impl_init(&s_lcd_impl);
|
epd_impl_init(&s_lcd_impl);
|
||||||
lcd_generic_ssd1289_init(&s_lcd);
|
lcd_generic_ssd1289_init(&s_lcd);
|
||||||
|
@ -170,11 +229,16 @@ int lvgl_setup(void) {
|
||||||
lv_disp_drv_register(&s_lvgl_disp_drv);
|
lv_disp_drv_register(&s_lvgl_disp_drv);
|
||||||
|
|
||||||
lv_fs_drv_init(&s_lvgl_fs_drv);
|
lv_fs_drv_init(&s_lvgl_fs_drv);
|
||||||
s_lvgl_fs_drv.letter = 'A';
|
s_lvgl_fs_drv.letter = 'A';
|
||||||
s_lvgl_fs_drv.open_cb = lvgl_fs_open_cb;
|
s_lvgl_fs_drv.open_cb = lvgl_fs_open_cb;
|
||||||
s_lvgl_fs_drv.close_cb = lvgl_fs_close_cb;
|
s_lvgl_fs_drv.close_cb = lvgl_fs_close_cb;
|
||||||
s_lvgl_fs_drv.read_cb = lvgl_fs_read_cb;
|
s_lvgl_fs_drv.read_cb = lvgl_fs_read_cb;
|
||||||
s_lvgl_fs_drv.seek_cb = lvgl_fs_seek_cb;
|
s_lvgl_fs_drv.write_cb = lvgl_fs_write_cb;
|
||||||
|
s_lvgl_fs_drv.seek_cb = lvgl_fs_seek_cb;
|
||||||
|
s_lvgl_fs_drv.tell_cb = lvgl_fs_tell_cb;
|
||||||
|
s_lvgl_fs_drv.dir_open_cb = lvgl_fs_dir_open_cb;
|
||||||
|
s_lvgl_fs_drv.dir_read_cb = lvgl_fs_dir_read_cb;
|
||||||
|
s_lvgl_fs_drv.dir_close_cb = lvgl_fs_dir_close_cb;
|
||||||
|
|
||||||
lv_fs_drv_register(&s_lvgl_fs_drv);
|
lv_fs_drv_register(&s_lvgl_fs_drv);
|
||||||
|
|
||||||
|
@ -185,7 +249,7 @@ int lvgl_setup(void) {
|
||||||
|
|
||||||
xSemaphoreGive(g_lvgl_semphr);
|
xSemaphoreGive(g_lvgl_semphr);
|
||||||
|
|
||||||
if (xTaskCreate(lvgl_task, "LVTASK", 2048, NULL, 32, NULL) != pdPASS) {
|
if (xTaskCreate(lvgl_task, "LVTASK", 2048, NULL, 13, NULL) != pdPASS) {
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ int main(void) {
|
||||||
|
|
||||||
// mtls_selftests(1);
|
// mtls_selftests(1);
|
||||||
|
|
||||||
xTaskCreate(vTaskHello, "HELLO", 256, NULL, 32, NULL);
|
xTaskCreate(vTaskHello, "HELLO", 512, NULL, 32, NULL);
|
||||||
|
|
||||||
vTaskStartScheduler();
|
vTaskStartScheduler();
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ static void vTaskHello(void *pvParameters) {
|
||||||
|
|
||||||
strftime(time_str, 7, "%H:%M", cur_tm);
|
strftime(time_str, 7, "%H:%M", cur_tm);
|
||||||
|
|
||||||
xQueueSend(g_ui_standby_queue, &cmd, 0);
|
xQueueSend(g_ui_standby_queue, &cmd, portMAX_DELAY);
|
||||||
|
|
||||||
printf("Current time: %04d-%02d-%02d %02d:%02d:%02d\r\n", cur_tm->tm_year + 1900, cur_tm->tm_mon + 1,
|
printf("Current time: %04d-%02d-%02d %02d:%02d:%02d\r\n", cur_tm->tm_year + 1900, cur_tm->tm_mon + 1,
|
||||||
cur_tm->tm_mday, cur_tm->tm_hour, cur_tm->tm_min, cur_tm->tm_sec);
|
cur_tm->tm_mday, cur_tm->tm_hour, cur_tm->tm_min, cur_tm->tm_sec);
|
||||||
|
|
|
@ -10,7 +10,7 @@ int ui_setup(void) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(xTaskCreate(ui_standby_task, "U_STBY", 256, NULL, 33, NULL) != pdPASS) {
|
if(xTaskCreate(ui_standby_task, "U_STBY", 256, NULL, 14, NULL) != pdPASS) {
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue