diff --git a/bsp/stm32f429-disco/applications/application.c b/bsp/stm32f429-disco/applications/application.c index e0ed7642b2ddad8a8f2fd0aa67593e1312adbc92..9fdc8838eea4adf5610bbc907b9a97efd8aaf610 100644 --- a/bsp/stm32f429-disco/applications/application.c +++ b/bsp/stm32f429-disco/applications/application.c @@ -32,8 +32,40 @@ #include #endif +#include "drv_touch.h" + +#ifdef PKG_USING_LITTLEVGL2RTT +#include "littlevgl2rtt.h" +#endif + +static void rt_touch_thread_entry(void *parameter) +{ + int16_t x; + int16_t y; + struct touch_state ts; + while(1) + { + touch_get_state(&ts); + +#ifdef PKG_USING_LITTLEVGL2RTT + if(ts.pressed) + { + x = (3706 - ts.x) / 14; + y = (-461 + ts.y) / 10.5; + + littlevgl2rtt_send_input_event(x, y, LITTLEVGL2RTT_INPUT_DOWN); + } + else + littlevgl2rtt_send_input_event(-1, -1, LITTLEVGL2RTT_INPUT_UP); +#endif + rt_thread_mdelay(100); + } +} + void rt_init_thread_entry(void* parameter) { + rt_thread_t tid; + /* GDB STUB */ #ifdef RT_USING_GDB gdb_set_device("uart6"); @@ -58,6 +90,16 @@ void rt_init_thread_entry(void* parameter) rt_components_init(); + rt_device_t tscreen = rt_device_find("touch"); + rt_device_open(tscreen, RT_DEVICE_FLAG_RDWR); + + tid = rt_thread_create("touch", + rt_touch_thread_entry, RT_NULL, + 1024, 4, 20); + + if (tid != RT_NULL) + rt_thread_startup(tid); + } int rt_application_init() diff --git a/bsp/stm32f429-disco/drivers/board.c b/bsp/stm32f429-disco/drivers/board.c index 684e5549ae7baa57047072a1327d86476ea7fcc7..2592f7964b4e807f328ed952e6e5e0b73c400ade 100644 --- a/bsp/stm32f429-disco/drivers/board.c +++ b/bsp/stm32f429-disco/drivers/board.c @@ -160,10 +160,6 @@ void rt_hw_board_init() lcd = rt_device_find("lcd"); rtgui_graphic_set_device(lcd); #endif - - rt_device_t tscreen = rt_device_find("touch"); - rt_device_open(tscreen, RT_DEVICE_FLAG_RDWR); - rt_timer_start((rt_timer_t)tscreen->user_data); } diff --git a/bsp/stm32f429-disco/drivers/drv_touch.c b/bsp/stm32f429-disco/drivers/drv_touch.c index 93d05ce89b0f07969ad649f27b9cc6c4a218f065..62971a3a08df74492b8b9ac8bb9137ce2a545600 100644 --- a/bsp/stm32f429-disco/drivers/drv_touch.c +++ b/bsp/stm32f429-disco/drivers/drv_touch.c @@ -213,26 +213,6 @@ void touch_show_state() } MSH_CMD_EXPORT(touch_show_state, show screen coordinate in touching); -static void touch_timer(void *parameter) -{ - int16_t x; - int16_t y; - struct touch_state ts; - touch_get_state(&ts); - -#ifdef PKG_USING_LITTLEVGL2RTT - if(ts.pressed) - { - x = (3706 - ts.x) / 14; - y = (-461 + ts.y) / 10.5; - - littlevgl2rtt_send_input_event(x, y, LITTLEVGL2RTT_INPUT_DOWN); - } - else - littlevgl2rtt_send_input_event(-1, -1, LITTLEVGL2RTT_INPUT_UP); -#endif -} - static int rt_hw_touch_init(void) { static struct rt_device touch; @@ -240,11 +220,7 @@ static int rt_hw_touch_init(void) /* init device structure */ touch.type = RT_Device_Class_Unknown; touch.init = stmpe811_touch_init; - - /* create 1/8 second timer */ - - touch.user_data = rt_timer_create("touch", touch_timer, RT_NULL, - RT_TICK_PER_SECOND/8, RT_TIMER_FLAG_PERIODIC); + touch.user_data = RT_NULL; /* register touch device to RT-Thread */ rt_device_register(&touch, "touch", RT_DEVICE_FLAG_RDWR);