static void context_switch_test(Bitmap *bm) { const Font *old_font = bm->font; gfx_setFont(&lcd_bitmap, &font_gohu); gfx_bitmapClear(bm); text_xprintf(bm, 0, 0, TEXT_FILL, "CPU: Cortex-M3 %luMHz", CPU_FREQ / 1000000); text_xprintf(bm, 1, 0, TEXT_FILL, "Board: SAM3N-EK EVB"); res_process(); gfx_setFont(&lcd_bitmap, old_font); }
/** * Initialize a Bitmap structure with the provided parameters. * * \note The pen position is reset to the origin. */ void gfx_bitmapInit(Bitmap *bm, uint8_t *raster, coord_t w, coord_t h) { bm->raster = raster; bm->width = w; bm->height = h; #if (CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_H_MSB) bm->stride = (w + 7) / 8; #elif CONFIG_BITMAP_FMT == BITMAP_FMT_PLANAR_V_LSB bm->stride = w; #else #error Unknown value of CONFIG_BITMAP_FMT #endif /* CONFIG_BITMAP_FMT */ bm->penX = 0; bm->penY = 0; #if CONFIG_GFX_TEXT gfx_setFont(bm, &default_font); bm->styles = 0; #endif #if CONFIG_GFX_CLIPPING bm->cr.xmin = 0; bm->cr.ymin = 0; bm->cr.xmax = w; bm->cr.ymax = h; #endif /* CONFIG_GFX_CLIPPING */ }
int main(void) { IRQ_ENABLE; kdbg_init(); LED_INIT(); timer_init(); proc_init(); spi_dma_init(&spi); spi_dma_setclock(LCD_SPICLOCK); lcd_ili9225_init(&spi.fd); LCD_BACKLIGHT_INIT(); lcd_setBacklight(lcd_brightness); gfx_bitmapInit(&lcd_bitmap, raster, LCD_WIDTH, LCD_HEIGHT); gfx_setFont(&lcd_bitmap, &font_luBS14); lcd_ili9225_blitBitmap(&lcd_bitmap); kbd_init(); hp_proc = proc_new(hp_process, NULL, PROC_STACK_SIZE, hp_stack); lp_proc = proc_new(lp_process, NULL, PROC_STACK_SIZE, lp_stack); led_proc = proc_new(led_process, NULL, PROC_STACK_SIZE, led_stack); proc_setPri(hp_proc, 2); proc_setPri(lp_proc, 1); lcd_ili9225_blitBitmap24(0, 50, BMP_LOGO_WIDTH, BMP_LOGO_HEIGHT, bmp_logo); timer_delay(3000); while (1) { menu_handle(&main_menu); cpu_relax(); } }