STM32F401CCU6快速移植littleVGL littleVGL是一个轻量化的开源GUI库,内存占用少(16MHz主频、64 kB Flash、16kB RAM)、界面精美、内置控件丰富、消耗资源小、可移植度高,能实现高级图形显示效。 1.CubeMX硬件配置: 主控为STM32F401CCU6,主频84MHz,256K Flash+64K RAM,屏幕为SPI接口的ili9341。主要用到TIM2、SPI1、RCC、GPIO等外设。 " h* L, l+ x( d0 @引脚定义: PC13--LED speed:low PA5--SPI1_CLK :硬件SPI speed:very high PA7--SPI_MOSI:硬件SPI speed:very high PB0--RST:复位 speed:very high PB1--RS:指令/数据 speed:very high PB2--CS:片选 speed:very high 时钟树配置 硬件SPI设置 SPI1配置为主发送模式,高位在前,CPOL为1,CPHA设为2 Edge,NSS选择软件模式。 TIM2 定时器设置 定时器2选择内部时钟源,向下计数模式,使能自动重装载寄存器,每隔1ms进入中断服务(84000000/(84*1000)=1ms),在NVIC Interrupt Table中开启定时器2中断。调试接口选择Serial Wire,时钟源选择SysTick。项目导出前将堆、栈大小设置为0x2000。 堆栈设置与库文件导出设置 2.TIM2测试、ili9341测试 (1)在main()函数中添加LL_TIM_EnableIT_UPDATE(TIM2);与LL_TIM_EnableCounter(TIM2);语句,使能定时器2更新,在stm32f4xx_it.c中补全中断服务函数,通过PC13引脚电平翻转只管判断定时器2工作状态,中断服务函数中须更新标志位。 TIM2定时器更新使能 TIM2中断服务函数 实验结果 (2)硬件SPI测试 在spi.c函数中构造SPI_WriteByte()函数,并在主函数中进行调用SPI_WriteByte(SPI1,0x4C);,通过逻辑分析仪抓取数据,判断函数工作状态。 SPI_WriteByte()函数 数据抓取 (3)ili9341移植 利用SPI_WriteByte();函数进行ili9341初始化函数移植,并保留画点函数、刷屏函数与刷屏范围函数。在主函数中利用刷屏函数进行ili9341驱动测试。 ili9341驱动函数 测试函数 测试结果 3.littleVGL移植 littleVGL移植主要是利用ili9341画点函数进行disp_flush();屏幕刷新函数的补全、初始化lv_port_disp_init();显示接口函数,并通过定时器Tim2中断服务中添加lv_tick_inc();函数,为littleVGL提供心跳。本试验采用的littleVGL版本号为7.10。 lv_conf_template.h文件重命名 将LVGL源文件中examples、src文件夹、lv_conf_template.h、lvgl.h等文件复制到lvgl文件夹中,打开lv_conf_template.h并置1,根据#ifndef LV_CONF_H将其重命名为lv_conf.h,将LV_HOR_RES_MAX与LV_VER_RES_MAX值更改为屏幕分辨率。 lv_port_disp_template.c文件 双击进入examples\porting文件夹中,存在lv_port_disp_template.c、lv_port_fs_template.c、lv_port_indev_template.c等函数,分别为底层显示、文件系统与输入设备驱动。本实验旨在利用ili9341进行GUI绘制,主要关注lv_port_disp_template.c文件。利用ili9341.c中Gui_DrawPoint()函数对disp_flush()函数进行补全、lv_port_disp_init函数保留第一种写缓存的方式,并在lv_port_disp_teplate.h中添加lv_port_disp_init()显示接口函数。在TIM2中断服务中添加lv_tick_inc(1),为littleVGL提供心跳,修改后的函数如下图所示: disp_flush()刷屏函数 littleVGL心跳 4.demo移植 下载对应版本的Demo包,保留src文件夹、lv_ex_conf_template.h与lv_examples.h文件,双击进入lv_ex_conf_template.h,将0改为1,根据#ifndefLV_EX_CONF_H将其文件名改成lv_ex_conf.h,通过更改DEMO USAGE栏的宏定义选择demo,并将demo函数添加至main()函数中。 lv_ex_conf.h文件重命名 Demo函数 主函数 实验效果图 |
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
STM32F103移植LittlevGUI代码
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【NUCLEO-WB09KE评测】使用I2C点亮一个OLED
【NUCLEO-WB09KE评测】USART的printf和GPIO的使用
【STM32H7S78-DK评测】使用FatFs文件系统读取SD卡文件
【NUCLEO-H533RE评测】+04 串口中断使用心得
【NUCLEO-H533RE评测】+03 printf输出调试