Driver
驱动部分允许开发人员为TouchGFX AL的各种功能选择驱动程序。
应用滴答计时源
应用程序的滴答计时源定义了如何驱动应用程序向前执行。 开发人员具有以下选项:
- LTDC- 如果在“显示”组中将LTDC选作接口,则应用计时源可以为“LTDC”。 这意味着TouchGFX Generator将在
TouchGFXGeneratedHAL
类中生成驱动程序函数(LTDC中断处理程序),该函数通过调用OSWrappers::signalVSync()
来驱动应用程序向前执行。 - 自定义和FMC - 在这种情况下,开发人员需要实现一个处理程序,来重复调用
OSWrappers::signalVSync()
函数,驱动应用程序向前执行。
Further reading
DMA2D Accelerator (ChromART)
对于DMA2D图形加速,开发人员有三个选项:
- 禁用-应用程序只使用CPU进行渲染。
- 启用 - 应用程序在Chrom-ART可用的情况下使用Chrom-ART来搬运和混合像素,释放CPU负载。 驱动程序由TouchGFX Generator生成,不需要开发人员采取任何措施。
- 自定义 - TouchGFX Generator 生成通用型TouchGFX DMA类,该类由TouchGFX 引擎中的DMA接口派生而来,开发人员必须为自定义图形加速器实现的成员函数。
要在ToughGFX 生成器中选择DMA2D加速器,必须在STM32CubeMX的Multimedia类别中启用DMA2D:
TouchGFX Generator生成的DMA2D(ChromART)驱动程序支持两种接收TransferCompleteInterrupt的方式:
- 使用STM32Cube HAL驱动程序,其将回调函数注册到dma2d句柄
hdma2d.XferCpltCallback
。 - 直接使用
DMA2D_IRQHandler()
中断处理程序。
通过在STM32CubeMX中的DMA2D IP的NVIC设置中启用或禁用DMA2D全局中断,可以在这两者之间进行切换:
选项1)启用全局中断生成的代码,选项2)禁用全局中断生成的代码。
Note
GPU2D Accelerator (NeoChrom)
GPU2D(NeoChrom)是一种图形加速器,能够加速TouchGFX中的许多绘图操作,包括纹理映射和矢量渲染。 它支持RGB565、RGB888和ARGB8888格式的帧缓存。
对于GPU2D图形加速,开发人员有两个选项:
- 禁用-应用程序不使用GPU进行图形渲染。
- 启用-应用程序TouchGFX在NeoChrom可用的情况下使用NeoChrom执行图形渲染加速操作。 驱动程序由TouchGFX Generator生成,不需要开发人员采取任何措施。
要在ToughGFX 生成器中选择GPU2D加速器,必须在STM32CubeMX的Multimedia 类别中启用:
Note
启用后,TouchGFX 生成器将出现一个新部分(GPU2D驱动程序):
GPU2D Command List Size(命令列表大小)设置以字节为单位设置GPU2D使用的命令列表的大小。
Note
实时操作系统
开发人员可使用任何支持TouchGFX的RTOS(甚至无操作系统)。 如抽象层架构中所述,TouchGFX 引擎使用OSWrappers
接口将其主事件循环以及帧缓存访问与用户选择的RTOS同步。 当开发者通过TouchGFX Generator选择操作系统时,将生成代码并通过所选操作系统的基元实现内部同步。 操作系统仍然必须通过STM32CubeMX进行配置,以确定堆栈大小等。
FreeRTOS (CMSIS OS V1和V2)和ThreadX(本地中间件或Azure RTOS软件包)可直接在STM32CubeMX中进行配置,TouchGFX Generator为用户提供任务定义和TouchGFX RTOS驱动程序的生成代码。 TouchGFX Generator 可生成符合CMSIS V1和CMSIS V2标准的RTOS驱动程序,与任何符合CMSIS标准的RTOS一起运行,一个用于ThreadX的驱动程序,一个用于在没有操作系统(无操作系统)的情况下运行裸机的驱动程序。
无OS
希望在无操作系统的情况下运行TouchGFX时,如果中间件和软件包类别或者X-CUBE中未启用操作系统,则ToughGFX 生成器中的无OS选项变为可用。
Further reading
FreeRTOS
选择ToughGFX 生成器中的CMSIS_RTOS_V1或CMSIS_RTOS_V2时,必须启用STM32CubeMX 中间件和软件包类别中的FreeRTOS:
某些TBS默认设置未配置使用FreeRTOS中间件,而是使用ThreadX或NoOS(例如:STM32U599)。 如果用户仍然想将FreeRTOS与此类TBS一起使用,则必须在STM32CubeMX的软件包组件选择器中下载X-CUBE-FreeRTOS包并启用。
Further reading
ThreadX
可通过选择X-CUBE软件包或启用STM32CubeMX中的Native ThreadX 中间件(如果适用于选定的MCU设备)来启用ThreadX。
开发人员应了解ThreadX是否配置为X-CUBE软件包或特定MCU系列的Native ThreadX Middleware(原生ThreadX中间件)。
Note
以下各节将展示如何将ThreadX作为Middleware(中间件)或AZRTOS Software Pack(软件包)用于应用程序。
从中间件和软件包类别启用ThreadX
选择ToughGFX 生成器中的ThreadX时,必须启用STM32CubeMX中间件和软件包类别中的ThreadX:
启用后,ThreadX选项在ToughGFX 生成器中可用。
Further reading
从X-CUBE软件包启用ThreadX
要在TouchGFX Generator中选择ThreadX,必须在STM32CubeMX中的Software Packs Component Selector(软件包组件选择器)中启用AZRTOS Software Pack(软件包)。 在项目中,单击 STM32CubeMX项目菜单中的“Select Components(选择组件)”按钮或Alt+o
。
下图显示了项目中如何使能AZRTOS软件包。 选择RTOS ThreadX并点击Core复选框以启用ThreadX。 下载并安装软件包(如尚未完成)。
将ThreadX软件包添加到项目后,X-CUBE应在STM32CubeMX项目菜单左侧的中间件和软件包类别下可见。
一旦启用ThreadX,它将成为ToughGFX 生成器中的一个可用选项,选择后,将显示内存池大小和内存堆栈大小值:
此类值应足够大,以包含线程资源。
Further reading
其他兼容CMSIS的OS
当开发人员采用与STM32CubeMX提供的操作系统(FreeRTOS和ThreadX)不同的其他兼容CMSIS的操作系统时,他必须手动完成RTOS配置和任务定义。 TouchGFX Generator将生成一个开发人员必须实现的空OSWrappers
接口。 通常,需要执行以下手动步骤:
- 配置RTOS
- 实现
OSWrappers
接口 - 定义任务以运行TouchGFX (
MX_TouchGFX_Process
) - 启动调度器
调用MX_TouchGFX_Process
,以启动任务处理程序中的TouchGFX Engine主循环。
void MX_TouchGFX_Process(void);