【怪兽F7】STemWin评测——免费的GUI

意法半导体向stm32客户免费提供stemwin软件。该软件内置segger vnc虚拟网络计算系统,可运用互联网协议远程查看用户界面。该软件还为开发人员提供其它强大的功能,其中包括窗口管理器和小工具包、触摸屏/鼠标支持,存储器上下文可实现无闪屏刷新。
目前stemwin并不提供源码,记得好像只有2.9以前的gui才有源码,这里stemwin是以库的形式提供的。
可以看出,这个库是针对m7而制作的,所以这里要使用stemwin的话,只要配置guiconf.c与lcdconf.c两个文件就可以了。
guiconf.c主要是配置显示缓存的大小 。
lcdconf.c主要是配置与lcd相关的参数与函数。
lcd-tft(液晶显示器——薄膜晶体管)显示器控制器提供并行数字 rgb (红色、绿色、蓝色)以及水平同步、垂直同步、像素时钟和数据使能信号,这些信号直接输出到不同 lcd和 tft面板的接口。
层混合:
ltdc编程步骤:
1、在 rcc寄存器中使能 ltdc 时钟。
2、按照面板数据表配置所需像素时钟。
3、配置同步时序:vsync、hsync、垂直和水平后沿、有效数据区域以及前沿时序。
4、配置 ltdc_gcr 寄存器中的同步信号和时钟极性。
5、必要时,配置 ltdc_bccr寄存器中的背景色。
6、配置 ltdc_ier和ltdc_lipcr 寄存器中的所需中断。
7、通过执行以下编程操作配置第 1/2层的参数:
1)、编程ltdc_lxwhpcr和ltdc_wvpcr 寄存器中的层窗口的水平和垂直位置。层窗口必须位于有效数据区域
2)、编程ltdc_lxpfcr 寄存器中的像素输入格式
3)、 编程ltdc_lxcfbar寄存器中的颜色帧起始地址
4)、 编程ltdc_lxcfblr寄存器中的颜色帧缓冲区的行长和间距
5)、 编程ltdc_lxcfblnr寄存器中的颜色帧缓冲区的行数
6)、 必要时,在ltdc_lxclutwr寄存器中为 clut 加载 rgb值及其地址
7)、 必要时,分别在ltdc_lxdccr和ltdc_lxbfcr寄存器中配置默认颜色和混合系数
8、使能 ltdc_lxcr寄存器中的第 1/2层,必要时使能 clut 。
9、必要时,可分别在ltdc_gcr和 ltdc_lxckcr寄存器中使能抖动和色键。也可以实时使能这两个功能。
10、通过 ltdc_srcr 寄存器将影子寄存器重载到活动寄存器中。
11、使能 ltdc_gcr 寄存器中的 lcd-tft控制器。
12、除 clut外,所有层参数均可实时修改。新配置必须通过配置ltdc_srcr 寄存器立即重载或在垂直消隐周期内重载。
如下,ltdc的初始化函数。对板子上的lcd进行初始化。
static void lcd_ll_layerinit(u32 layerindex)
{
ltdc_layercfgtypedef layer_cfg;
if (layerindex < gui_num_layers)
{
/* layer configuration */
layer_cfg.windowx0 = 0;
layer_cfg.windowx1 = xsize_phys;
layer_cfg.windowy0 = 0;
layer_cfg.windowy1 = ysize_phys;
layer_cfg.pixelformat = lcd_ll_getpixelformat(layerindex);
layer_cfg.fbstartadress = ((uint32_t)0xc0000000);
layer_cfg.alpha = 255;
layer_cfg.alpha0 = 0;
layer_cfg.backcolor.blue = 0;
layer_cfg.backcolor.green = 0;
layer_cfg.backcolor.red = 0;
layer_cfg.blendingfactor1 = ltdc_blending_factor1_paxca;
layer_cfg.blendingfactor2 = ltdc_blending_factor2_paxca;
layer_cfg.imagewidth = xsize_phys;
layer_cfg.imageheight = ysize_phys;
hal_ltdc_configlayer(&hltdc, &layer_cfg, layerindex);
/* enable lut on demand */
if (lcd_getbitsperpixelex(layerindex) <= 8)
{
/* enable usage of lut for all modes with <= 8bpp*/
hal_ltdc_enableclut(&hltdc, layerindex);
}
}
}
复制代码
static void lcd_ll_init(void)
{
/* deinit */
hal_ltdc_deinit(&hltdc);
/* set lcd timings */
hltdc.init.horizontalsync = 40;
hltdc.init.verticalsync = 9;
hltdc.init.accumulatedhbp = 53;
hltdc.init.accumulatedvbp = 11;
hltdc.init.accumulatedactiveh = 283;
hltdc.init.accumulatedactivew = 533;
hltdc.init.totalheigh = 285;
hltdc.init.totalwidth = 565;
/* background value */
hltdc.init.backcolor.blue = 0;
hltdc.init.backcolor.green = 0;
hltdc.init.backcolor.red = 0;
/* polarity */
hltdc.init.hspolarity = ltdc_hspolarity_al;
hltdc.init.vspolarity = ltdc_vspolarity_al;
hltdc.init.depolarity = ltdc_depolarity_al;
hltdc.init.pcpolarity = ltdc_pcpolarity_ipc;
hltdc.instance = ltdc;
hal_ltdc_init(&hltdc);
hal_ltdc_programlineevent(&hltdc, 0);
/* enable dithering */
hal_ltdc_enabledither(&hltdc);
/* configure the dma2d default mode */
hdma2d.init.mode = dma2d_r2m;
hdma2d.init.colormode = dma2d_rgb565;
hdma2d.init.outputoffset = 0x0;
hdma2d.instance = dma2d;
if(hal_dma2d_init(&hdma2d) != hal_ok)
{
while (1);
}
/* assert display enable lcd_disp pin */
hal_gpio_writepin(gpioi, gpio_pin_12, gpio_pin_set);
/* assert backlight lcd_bl_ctrl pin */
hal_gpio_writepin(gpiok, gpio_pin_3, gpio_pin_set);
}
在使用gui之前,要gui_init();函数,对st emwin 的库进行初始化,并使用wm_setcreateflags(wm_cf_memdev);激活存储设备。
完成上述的工作,就可以在工程中调用st emwin的api函数了。
如,在lcd上显示hello world。
清屏,清除lcd为黑色的背景色。
gui_clear();
设置gui的字体为gui_font20_1。
gui_setfont(&gui_font20_1);
这里有很多的字体可以使用的。
使用gui_dispstringat函数显示字符串。
这个函数的第一个参数是要显示的字符串,后两个参数是要显示字符串的位置。
gui_dispstringat(hello world!, (lcd_getxsize()-100)/2, (lcd_getysize()-20)/2);
程序运行结果:
相关推荐:
stm32单片机官方开发工具一览
stm32评估开发板列表
arm cortex-m内核stm32单片机产品全览
stm32微控制器参考设计
stm32/stm8
意法半导体/st/stm

机器视觉之玻璃产品缺陷检测
在数字系统中的多种方法解决电磁干扰问题
Hypium的单元测试框架和UI测试框架
iOS 13新增多镜头 同时拍摄功能创意爆表
有多强? 魅蓝Note 5快充+续航专项评测
【怪兽F7】STemWin评测——免费的GUI
好大一个局!国芯为崛起不惜拿高通开刀
彭博:苹果预计明年翻新整个iPad产品线
社交媒体应用程序dapps发展势头讯猛,众企业都在推广使用区块链
C语言的printf是行缓冲输出,什么意思呢?
宝马加快了全新3系国产化的进程 预计明年在铁西工厂正式投产
【自适应计算在机器人领域的应用】连载七:用ROS 2在机器人内部集成自适应计算的新架构
基于STM32F407的FreeRTOS学习笔记(5)
有哪些睡觉可以使用的降噪耳机?睡眠降噪蓝牙耳机推荐
数字式时间继电器抗干扰的方法
晶圆级CSP的装配工艺流程
腾讯全球数字生态大会:NVIDIA 智驾方案驱动软件定义汽车的持续创新
开发有效的硬件和软件COTS安全技术
英特尔领投,AIRY3D完成1000万美元A轮融资
山东电科院“红色盾牌”守护配电物联网