87int main(
int argc,
char *argv[])
89 if (argv[1] == NULL || atoi(argv[1]) < 0 || atoi(argv[1]) > 5) {
90 printf(
"lv_examples 0, is lv_demo_widgets\n");
91 printf(
"lv_examples 1, is lv_demo_music\n");
92 printf(
"lv_examples 2, is lv_demo_benchmark\n");
93 printf(
"lv_examples 3, is lv_demo_keypad_encoder\n");
94 printf(
"lv_examples 4, is lv_demo_stress\n");
101 uint32_t rotated = LV_DISP_ROT_NONE;
104 sunxifb_init(rotated);
107 static uint32_t width, height;
108 sunxifb_get_sizes(&width, &height);
110 static lv_color_t *buf;
111 buf = (lv_color_t*) sunxifb_alloc(width * height *
sizeof(lv_color_t),
116 printf(
"malloc draw buffer fail\n");
121 static lv_disp_draw_buf_t disp_buf;
122 lv_disp_draw_buf_init(&disp_buf, buf, NULL, width * height);
125 static lv_disp_drv_t disp_drv;
126 lv_disp_drv_init(&disp_drv);
127 disp_drv.draw_buf = &disp_buf;
128 disp_drv.flush_cb = sunxifb_flush;
129 disp_drv.hor_res = width;
130 disp_drv.ver_res = height;
131 disp_drv.rotated = rotated;
132#ifndef USE_SUNXIFB_G2D_ROTATE
133 if (rotated != LV_DISP_ROT_NONE)
134 disp_drv.sw_rotate = 1;
136 lv_disp_drv_register(&disp_drv);
139 static lv_indev_drv_t indev_drv;
140 lv_indev_drv_init(&indev_drv);
141 indev_drv.type =LV_INDEV_TYPE_POINTER;
142 indev_drv.read_cb = evdev_read;
144 lv_indev_t * evdev_indev = lv_indev_drv_register(&indev_drv);
147 switch(atoi(argv[1])) {
158 lv_demo_keypad_encoder();
194 static uint64_t start_ms = 0;
196 struct timeval tv_start;
197 gettimeofday(&tv_start, NULL);
198 start_ms = ((uint64_t) tv_start.tv_sec * 1000000
199 + (uint64_t) tv_start.tv_usec) / 1000;
202 struct timeval tv_now;
203 gettimeofday(&tv_now, NULL);
205 now_ms = ((uint64_t) tv_now.tv_sec * 1000000 + (uint64_t) tv_now.tv_usec)
208 uint32_t time_ms = now_ms - start_ms;
int main(int argc, char *argv[])
主程序入口函数
uint32_t custom_tick_get(void)
LVGL心跳接口
static int tick_thread(void *data)
static void hal_init(void)