|
接上篇:stm32f429移植uGUI(上篇) int main(void)里面需要拷贝的有 /* Init ?UI */ UG_Init(&gui,(void(*)(UG_S16,UG_S16,UG_COLOR))pset,240,320); /* Init Touch */ // IOE_Config(); /* Register hardware acceleration */ UG_DriverRegister( DRIVER_DRAW_LINE, (void*)_HW_DrawLine ); UG_DriverRegister( DRIVER_FILL_FRAME, (void*)_HW_FillFrame ); UG_DriverEnable( DRIVER_DRAW_LINE ); UG_DriverEnable( DRIVER_FILL_FRAME ); /* Init SysTick (100Hz) */ systick_init(); /* Clear Screen */ ltdc_draw_layer(LAYER_1); ltdc_show_layer(LAYER_1); UG_FillScreen( C_BLACK ); /* Create Window 1 */ UG_WindowCreate( &window_1, obj_buff_wnd_1, MAX_OBJECTS, window_1_callback ); UG_WindowSetTitleText( &window_1, "?UI @ STM32F429" ); UG_WindowSetTitleTextFont( &window_1, &FONT_12X20 ); /* Create some Buttons */ UG_ButtonCreate( &window_1, &button1_1, BTN_ID_0, 10, 10, 110, 60 ); UG_ButtonCreate( &window_1, &button1_2, BTN_ID_1, 10, 80, 110, 130 ); UG_ButtonCreate( &window_1, &button1_3, BTN_ID_2, 10, 150, 110,200 ); UG_ButtonCreate( &window_1, &button1_4, BTN_ID_3, 120, 10, UG_WindowGetInnerWidth( &window_1 ) - 10 , 60 ); UG_ButtonCreate( &window_1, &button1_5, BTN_ID_4, 120, 80, UG_WindowGetInnerWidth( &window_1 ) - 10, 130 ); UG_ButtonCreate( &window_1, &button1_6, BTN_ID_5, 120, 150, UG_WindowGetInnerWidth( &window_1 ) - 10, 200 ); /* Configure Button 1 */ UG_ButtonSetFont( &window_1, BTN_ID_0, &FONT_12X20 ); UG_ButtonSetBackColor( &window_1, BTN_ID_0, C_LIME ); UG_ButtonSetText( &window_1, BTN_ID_0, "Green\nLED" ); /* Configure Button 2 */ UG_ButtonSetFont( &window_1, BTN_ID_1, &FONT_12X20 ); UG_ButtonSetBackColor( &window_1, BTN_ID_1, C_RED ); UG_ButtonSetText( &window_1, BTN_ID_1, "Red\nLED" ); /* Configure Button 3 */ UG_ButtonSetFont( &window_1, BTN_ID_2, &FONT_12X20 ); UG_ButtonSetText( &window_1, BTN_ID_2, "About\n?UI" ); UG_WindowShow( &window_1 ); /* Configure Button 4 */ UG_ButtonSetFont( &window_1, BTN_ID_3, &FONT_12X20 ); UG_ButtonSetForeColor( &window_1, BTN_ID_3, C_RED ); UG_ButtonSetText( &window_1, BTN_ID_3, "HW_ACC\nOFF" ); /* Configure Button 5 */ UG_ButtonSetFont( &window_1, BTN_ID_4, &FONT_8X14 ); UG_ButtonSetText( &window_1, BTN_ID_4, "Start\nBenchmark" ); /* Configure Button 6 */ UG_ButtonSetFont( &window_1, BTN_ID_5, &FONT_10X16 ); UG_ButtonSetText( &window_1, BTN_ID_5, "Resize\nWindow" ); /* -------------------------------------------------------------------------------- */ /* Create Window 2 (?UI Info) */ /* -------------------------------------------------------------------------------- */ UG_WindowCreate( &window_2, obj_buff_wnd_2, MAX_OBJECTS, window_2_callback ); UG_WindowSetTitleText( &window_2, "Info" ); UG_WindowSetTitleTextFont( &window_2, &FONT_12X20 ); UG_WindowResize( &window_2, 20, 40, 219, 279 ); /* Create Button 1 */ UG_ButtonCreate( &window_2, &button2_1, BTN_ID_0, 40, 150, UG_WindowGetInnerWidth( &window_2 )-40, 200 ); UG_ButtonSetFont( &window_2, BTN_ID_0, &FONT_22X36 ); UG_ButtonSetText( &window_2, BTN_ID_0, "OK!" ); /* Create Textbox 1 */ UG_TextboxCreate( &window_2, &textbox2_1, TXB_ID_0, 10, 10, UG_WindowGetInnerWidth( &window_2 )-10, 40 ); UG_TextboxSetFont( &window_2, TXB_ID_0, &FONT_16X26 ); UG_TextboxSetText( &window_2, TXB_ID_0, "?UI v0.3" ); UG_TextboxSetAlignment( &window_2, TXB_ID_0, ALIGN_TOP_CENTER ); /* Create Textbox 2 */ UG_TextboxCreate( &window_2, &textbox2_2, TXB_ID_1, 10, 125, UG_WindowGetInnerWidth( &window_2 )-10, 135 ); UG_TextboxSetFont( &window_2, TXB_ID_1, &FONT_6X8 ); UG_TextboxSetText( &window_2, TXB_ID_1, "www embeddedlightning com" ); UG_TextboxSetAlignment( &window_2, TXB_ID_1, ALIGN_BOTTOM_CENTER ); UG_TextboxSetForeColor( &window_2, TXB_ID_1, C_BLUE ); UG_TextboxSetHSpace( &window_2, TXB_ID_1, 1 ); /* Create Image 1 */ UG_ImageCreate( &window_2, &image2_1, IMG_ID_0, (UG_WindowGetInnerWidth( &window_2 )>>1) - (logo.width>>1), 40, 0, 0 ); UG_ImageSetBMP( &window_2, IMG_ID_0, &logo ); /* -------------------------------------------------------------------------------- */ /* Create Window 3 (Benchmark Result) */ /* -------------------------------------------------------------------------------- */ UG_WindowCreate( &window_3, obj_buff_wnd_3, MAX_OBJECTS, window_3_callback ); UG_WindowSetTitleText( &window_3, "Benchmark Result" ); UG_WindowSetTitleTextFont( &window_3, &FONT_10X16 ); UG_WindowResize( &window_3, 20, 90, 219, 230 ); /* Create Textbox 1 */ UG_TextboxCreate( &window_3, &textbox3_1, TXB_ID_0, 5, 10, UG_WindowGetInnerWidth( &window_3 )-5, 60 ); UG_TextboxSetFont( &window_3, TXB_ID_0, &FONT_12X20 ); UG_TextboxSetText( &window_3, TXB_ID_0, "Result:\n99999 frm/sec" ); UG_TextboxSetAlignment( &window_3, TXB_ID_0, ALIGN_TOP_CENTER ); /* Create Button 1 */ UG_ButtonCreate( &window_3, &button3_1, BTN_ID_0, 40, 65, UG_WindowGetInnerWidth( &window_3 )-40, 100 ); UG_ButtonSetFont( &window_3, BTN_ID_0, &FONT_12X16 ); UG_ButtonSetText( &window_3, BTN_ID_0, "OK!" ); /* -------------------------------------------------------------------------------- */ /* Start demo application */ /* -------------------------------------------------------------------------------- */ /* Show Window 1 */ UG_WindowShow( &window_1 ); UG_WaitForUpdate(); /* Initialize FSM */ next_state = STATE_MAIN_MENU; state = !STATE_MAIN_MENU; while(1) { static int frm_cnt; /* Do we change the state? */ if ( next_state != state ) { /* Initialize the next state */ switch ( next_state ) { case STATE_MAIN_MENU: { /* Nothing to do */ break; } case STATE_BENCHMARK_RUN: { /* Clear layer 2 */ ltdc_draw_layer( LAYER_2 ); UG_FillScreen( C_BLACK ); /* Fade to layer 2 */ ltdc_fade_to_layer( LAYER_2 ); /* Reset the frame counter */ frm_cnt = 0; /* Run benchmark for 5 seconds */ timer = 500; break; } case STATE_BENCHMARK_RESULT: { /* Nothing to do */ break; } } state = next_state; } /* FSM */ switch ( state ) { /* Run the benchmark */ case STATE_BENCHMARK_RUN: { xs = randx() % 240; xe = randx() % 240; ys = randx() % 320; ye = randx() % 320; c = randx() % 0xFFFFFF; UG_FillFrame( xs, ys, xe, ye, c ); frm_cnt++; if ( !timer ) next_state = STATE_BENCHMARK_RESULT; break; } /* Show benchmark result */ case STATE_BENCHMARK_RESULT: { sprintf( result_str, "Result:\n%u frm/sec", frm_cnt/5 ); UG_TextboxSetText( &window_3, TXB_ID_0, result_str ); /* Fade to layer 1 */ ltdc_draw_layer( LAYER_1 ); ltdc_fade_to_layer( LAYER_1 ); /* Show benchmark result */ UG_WindowShow( &window_3 ); next_state = STATE_MAIN_MENU; break; } case STATE_MAIN_MENU: { /* Let ?UI do the job! */ break; } } } 拷贝完成,按照我提供的代码更改一下,就可以编译运行了。 后面有时间继续深入研究一下。 附工程文件下载 |
| 楼主,同一个主题的,可以在一个帖子里修改完成的! |
| 是吗,我在别的论坛首发的,那个论坛就有字数限制的 |
| 这个论坛,帖子有3000字的字数限制 |
| 是的 |
| 这个论坛,帖子有3000字的字数限制 |
| 是的哦,,,, |
微信公众号
手机版