STM32F429 初试TouchGFX

自制的429开发板到了最后的一个目标-TouchGFX
随着新版本的发布,TouchGFX和CubeMX之间的集成越来越好了,操作了越来越容易了。
这里429需要用到SDRAM+LTDC+FreeRTOS+SPI(触屏)以及LCD液晶屏的驱动,这些自己先搞定,也不难,都搞定了就可以到TouchGFX的配置了。

  1. FreeRTOS里面设置
    STM32F429 初试TouchGFX_第1张图片
    STM32F429 初试TouchGFX_第2张图片
  2. 开启DMA2D以及LTDC的全局中断
  3. Cubemx配置TouchGFX
    先点additional software下载这个包
    STM32F429 初试TouchGFX_第3张图片
    STM32F429 初试TouchGFX_第4张图片
    然后配置,配置不对的话会有错误提示,按照提示解决就好了。
    STM32F429 初试TouchGFX_第5张图片
  4. CubeMX生成代码
  5. 去freertos.c添加TouchGFX运行函数MX_TouchGFX_Process()
void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
	MX_TouchGFX_Process();
  /* USER CODE END StartDefaultTask */
}
  1. 去STM32TouchController.cpp添加触屏驱动, 注意X,Y 是屏幕坐标,不像STemwin是AD值
bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
{
		if(XPT2046_READ_X()==0 && XPT2046_READ_Y()==0)
		{
			return false;
		}
		else
		{
			x=XPT2046_READ_X();
			y=XPT2046_READ_Y();
			return true;
		}
}
  1. 打开TouchGFX,如果刚才下载了还没有安装,记得去以下地址找到安装包进行安装。。
    C:\Users\XXX\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-TOUCHGFX\4.13.0\Utilities\PC_Software\TouchGFXDesigner

  2. 去到TouchGFX designer,打开位于STM32项目文件夹(Src)下的xxx.touchgfx文件xxx为项目名

  3. 设计界面
    STM32F429 初试TouchGFX_第6张图片

  4. 设计好了点Generate Code, 然后回到Keil中编译下载就可以了。 到此就可以用了

  5. 这里展开说下按钮的回调函数,实现点左边按钮进度条+1,右边-1
    STM32F429 初试TouchGFX_第7张图片

  6. 找到screenView.hpp, 注意有多个窗口的话screen后面有数字,找到相应的文件修改

class screenView : public screenViewBase
{
public:
    screenView();
    virtual ~screenView() {}
    virtual void setupScreen();
    virtual void tearDownScreen();
			
	virtual void DOWN_Function(); //added
	virtual void UP_Function();//added
	int count;//added
protected:
};
  1. 找到screenView.cpp, 注意有多个窗口的话screen后面有数字,找到相应的文件修改
screenView::screenView()
{
		count=0;//added
}
void screenView::DOWN_Function()
{
	count++;
	if (count > 100) {
		count = 0;
	}
	touchgfx_printf("count %d\r\n", count);
	circleProgress1.setValue(count);
	circleProgress1.invalidate();
}

void screenView::UP_Function()
{
	count--;
	if (count < 0) {
		count = 100;
	}
	touchgfx_printf("count %d\r\n", count);
	circleProgress1.setValue(count);
	circleProgress1.invalidate();
}
  1. 运行结果
    STM32F429 初试TouchGFX_第8张图片

好了到此就告一段落了,大家自由发挥吧.
我的一个阶段目标达成,也要停下来想想接下来研究点撒,估计是FPGA,下一个目标。

你可能感兴趣的:(STM32,stm32,TOUCHGFX)