欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

STM32F429 初试TouchGFX

程序员文章站 2022-03-06 08:09:20
...

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

  1. FreeRTOS里面设置
    STM32F429 初试TouchGFX
    STM32F429 初试TouchGFX
  2. 开启DMA2D以及LTDC的全局中断
  3. Cubemx配置TouchGFX
    先点additional software下载这个包
    STM32F429 初试TouchGFX
    STM32F429 初试TouchGFX
    然后配置,配置不对的话会有错误提示,按照提示解决就好了。
    STM32F429 初试TouchGFX
  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

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

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

  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

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