11/*
2- * Copyright (c) 2006-2023, RT-Thread Development Team
2+ * Copyright (c) 2006-2025 RT-Thread Development Team
33 *
44 * SPDX-License-Identifier: Apache-2.0
55 *
@@ -363,11 +363,9 @@ INIT_DEVICE_EXPORT(drv_lcd_hw_init);
363363#ifndef ART_PI_TouchGFX_LIB
364364#ifdef DRV_DEBUG
365365#ifdef FINSH_USING_MSH
366- int lcd_test ( )
366+ static void lcd_thread ( void * arg )
367367{
368- struct drv_lcd_device * lcd ;
369- lcd = (struct drv_lcd_device * )rt_device_find ("lcd" );
370-
368+ struct drv_lcd_device * lcd = (struct drv_lcd_device * )arg ;
371369 while (1 )
372370 {
373371 if (lcd -> lcd_info .pixel_format == RTGRAPHIC_PIXEL_FORMAT_RGB565 )
@@ -378,15 +376,15 @@ int lcd_test()
378376 lcd -> lcd_info .framebuffer [2 * i ] = 0x00 ;
379377 lcd -> lcd_info .framebuffer [2 * i + 1 ] = 0xF8 ;
380378 }
381- lcd -> parent . control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
379+ rt_device_control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
382380 rt_thread_mdelay (1000 );
383381 /* green */
384382 for (int i = 0 ; i < LCD_BUF_SIZE / 2 ; i ++ )
385383 {
386384 lcd -> lcd_info .framebuffer [2 * i ] = 0xE0 ;
387385 lcd -> lcd_info .framebuffer [2 * i + 1 ] = 0x07 ;
388386 }
389- lcd -> parent . control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
387+ rt_device_control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
390388 rt_thread_mdelay (1000 );
391389 /* blue */
392390 for (int i = 0 ; i < LCD_BUF_SIZE / 2 ; i ++ )
@@ -404,7 +402,7 @@ int lcd_test()
404402 lcd -> lcd_info .framebuffer [3 * i + 1 ] = 0x00 ;
405403 lcd -> lcd_info .framebuffer [3 * i + 2 ] = 0xff ;
406404 }
407- lcd -> parent . control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
405+ rt_device_control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
408406 rt_thread_mdelay (1000 );
409407 /* green */
410408 for (int i = 0 ; i < LCD_BUF_SIZE / 3 ; i ++ )
@@ -413,7 +411,7 @@ int lcd_test()
413411 lcd -> lcd_info .framebuffer [3 * i + 1 ] = 0xff ;
414412 lcd -> lcd_info .framebuffer [3 * i + 2 ] = 0x00 ;
415413 }
416- lcd -> parent . control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
414+ rt_device_control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
417415 rt_thread_mdelay (1000 );
418416 /* blue */
419417 for (int i = 0 ; i < LCD_BUF_SIZE / 3 ; i ++ )
@@ -424,11 +422,34 @@ int lcd_test()
424422 }
425423 }
426424
427- lcd -> parent . control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
425+ rt_device_control (& lcd -> parent , RTGRAPHIC_CTRL_RECT_UPDATE , RT_NULL );
428426 rt_thread_mdelay (1000 );
429427 }
430428}
431- MSH_CMD_EXPORT (lcd_test , lcd_test );
429+ int lcd_test (void )
430+ {
431+ struct drv_lcd_device * lcd ;
432+ lcd = (struct drv_lcd_device * )rt_device_find ("lcd" );
433+ if (lcd == RT_NULL )
434+ {
435+ LOG_E ("Failed to find LCD device!\n" );
436+ return - RT_ERROR ;
437+ }
438+
439+ const char * thread_name = "lcd_test" ;
440+ rt_thread_t thread = rt_thread_create (thread_name , lcd_thread , lcd , 256 , RT_THREAD_PRIORITY_MAX - 1 , 10 );
441+ if (thread != RT_NULL )
442+ {
443+ rt_thread_startup (thread );
444+ }
445+ else
446+ {
447+ LOG_E ("%s created failed." , thread_name );
448+ return - RT_ERROR ;
449+ }
450+ return RT_EOK ;
451+ }
452+ MSH_CMD_EXPORT (lcd_test , Create thread test lcd );
432453#endif /* FINSH_USING_MSH */
433454#endif /* DRV_DEBUG */
434455#endif /* BSP_USING_LCD */
0 commit comments