在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程

目录

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程
在ART-Pi H750上移植TouchGFX(二)——制作MDK的外部QSPI-FLASH烧录算法
在ART-Pi H750上移植TouchGFX(三)——移植TouchGFX到RT-Thread系统
在ART-Pi H750上移植TouchGFX(四)——使用RT-Thread Studio移植TouchGFX
在ART-Pi H750上移植TouchGFX(五)——制作ST-LINK的外部QSPI-FLASH烧录算法

实验平台:

硬件: RT-Thread官方ART-PI H750开发版,正点原子4.3寸RGBLCD屏(800*480)
软件: 最新版本的STM32CubeH7固件库,TouchGFXDesigner v4.14和 STM32CubeMX V6.0.1,开发环境MDK v5.29
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第1张图片

代码下载:

CSDN:https://download.csdn.net/download/sinat_31039061/12849862

联系作者:

关注公众号,免费查看,回复“加群”,加入技术交流群
在这里插入图片描述

从零开始创建TouchGFX UI项目

选择MCU型号(STM32H750XBH6)

在这里插入图片描述

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第2张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第3张图片

选择和配置组件(系统、外设、中间件)

在这里插入图片描述

系统需要

RCC

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第4张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第5张图片

SYS

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第6张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第7张图片

GUI功能需要

I2C

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第8张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第9张图片

FMC

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第10张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第11张图片

在主程序中添加SDRAM的初始化代码:

#define REFRESH_COUNT        677
#define SDRAM_TIMEOUT                            ((uint32_t)0xFFFF)
#define SDRAM_MODEREG_BURST_LENGTH_1             ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_LENGTH_2             ((uint16_t)0x0001)
#define SDRAM_MODEREG_BURST_LENGTH_4             ((uint16_t)0x0002)
#define SDRAM_MODEREG_BURST_LENGTH_8             ((uint16_t)0x0004)
#define SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL      ((uint16_t)0x0000)
#define SDRAM_MODEREG_BURST_TYPE_INTERLEAVED     ((uint16_t)0x0008)
#define SDRAM_MODEREG_CAS_LATENCY_2              ((uint16_t)0x0020)
#define SDRAM_MODEREG_CAS_LATENCY_3              ((uint16_t)0x0030)
#define SDRAM_MODEREG_OPERATING_MODE_STANDARD    ((uint16_t)0x0000)
#define SDRAM_MODEREG_WRITEBURST_MODE_PROGRAMMED ((uint16_t)0x0000) 
#define SDRAM_MODEREG_WRITEBURST_MODE_SINGLE     ((uint16_t)0x0200) 
void MX_SDRAM_InitEx(void)
{
     
  __IO uint32_t tmpmrd = 0;
  
  /* Step 1: Configure a clock configuration enable command */
  Command.CommandMode            = FMC_SDRAM_CMD_CLK_ENABLE;
  Command.CommandTarget          =  FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = 0;

  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT);

  /* Step 2: Insert 100 us minimum delay */ 
  /* Inserted delay is equal to 1 ms due to systick time base unit (ms) */
  HAL_Delay(1);
    
  /* Step 3: Configure a PALL (precharge all) command */ 
  Command.CommandMode            = FMC_SDRAM_CMD_PALL;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = 0;

  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT);  
  
  /* Step 4: Configure an Auto Refresh command */ 
  Command.CommandMode            = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 4;
  Command.ModeRegisterDefinition = 0;

  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT);
  
  /* Step 5: Program the external memory mode register */
  tmpmrd = (uint32_t)SDRAM_MODEREG_BURST_LENGTH_4          |\
                     SDRAM_MODEREG_BURST_TYPE_SEQUENTIAL   |\
                     SDRAM_MODEREG_CAS_LATENCY_2           |\
                     SDRAM_MODEREG_OPERATING_MODE_STANDARD |\
                     SDRAM_MODEREG_WRITEBURST_MODE_SINGLE;

  Command.CommandMode            = FMC_SDRAM_CMD_LOAD_MODE;
  Command.CommandTarget          = FMC_SDRAM_CMD_TARGET_BANK1;
  Command.AutoRefreshNumber      = 1;
  Command.ModeRegisterDefinition = tmpmrd;

  /* Send the command */
  HAL_SDRAM_SendCommand(&hsdram1, &Command, SDRAM_TIMEOUT);
  
  /* Step 6: Set the refresh rate counter */
  /* Set the device refresh rate */
  HAL_SDRAM_ProgramRefreshRate(&hsdram1, REFRESH_COUNT); 
}

QUADSPI

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第12张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第13张图片

DMA2D

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第14张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第15张图片

LCDC
LTDC基本参数设置

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第16张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第17张图片

Layer参数设置
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第18张图片
CRC

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第19张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第20张图片

NVIC

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第21张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第22张图片

中间件需要

基本参数配置

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第23张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第24张图片

任务和队列

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第25张图片
TouchGFX软件包

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第26张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第27张图片

应用层需要

UART
UART4

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第28张图片
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第29张图片

配置时钟树

在这里插入图片描述
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第30张图片

设置工程并生成工程

在这里插入图片描述
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第31张图片

执行TouchGFX Designer

在这里插入图片描述
在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第32张图片

测试TouchGFX显示基本UI

在ART-Pi H750上移植TouchGFX(一)——使用STM32CUBMX生成TouchGFX工程_第33张图片

你可能感兴趣的:(ART-PI,TouchGFX,RT-Thread)