续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, "GreennLED" );
/* 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, "RednLED" );
/* Configure Button 3 */
UG_ButtonSetFont( &window_1, BTN_ID_2, &FONT_12X20 );
UG_ButtonSetText( &window_1, BTN_ID_2, "Aboutn?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_ACCnOFF" );
/* Configure Button 5 */
UG_ButtonSetFont( &window_1, BTN_ID_4, &FONT_8X14 );
UG_ButtonSetText( &window_1, BTN_ID_4, "StartnBenchmark" );
/* Configure Button 6 */
UG_ButtonSetFont( &window_1, BTN_ID_5, &FONT_10X16 );
UG_ButtonSetText( &window_1, BTN_ID_5, "ResizenWindow" );
/* -------------------------------------------------------------------------------- */
/* 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;
}
}
}
拷贝完成,按照我提供的代码更改一下,就可以编译运行了。
后面有时间继续深入研究一下。
发稿与2018年1月10日
点击下载→stm32f429移植uGUI--工程文件
|