STM32F429 初试TouchGFX
程序员文章站
2022-03-06 08:09:20
...
自制的429开发板到了最后的一个目标-TouchGFX
随着新版本的发布,TouchGFX和CubeMX之间的集成越来越好了,操作了越来越容易了。
这里429需要用到SDRAM+LTDC+FreeRTOS+SPI(触屏)以及LCD液晶屏的驱动,这些自己先搞定,也不难,都搞定了就可以到TouchGFX的配置了。
- FreeRTOS里面设置
- 开启DMA2D以及LTDC的全局中断
- Cubemx配置TouchGFX
先点additional software下载这个包
然后配置,配置不对的话会有错误提示,按照提示解决就好了。
- CubeMX生成代码
- 去freertos.c添加TouchGFX运行函数MX_TouchGFX_Process()
void StartDefaultTask(void const * argument)
{
/* USER CODE BEGIN StartDefaultTask */
MX_TouchGFX_Process();
/* USER CODE END StartDefaultTask */
}
- 去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;
}
}
-
打开TouchGFX,如果刚才下载了还没有安装,记得去以下地址找到安装包进行安装。。
C:\Users\XXX\STM32Cube\Repository\Packs\STMicroelectronics\X-CUBE-TOUCHGFX\4.13.0\Utilities\PC_Software\TouchGFXDesigner
-
去到TouchGFX designer,打开位于STM32项目文件夹(Src)下的xxx.touchgfx文件xxx为项目名
-
设计界面
-
设计好了点Generate Code, 然后回到Keil中编译下载就可以了。 到此就可以用了
-
这里展开说下按钮的回调函数,实现点左边按钮进度条+1,右边-1
-
找到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:
};
- 找到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();
}
- 运行结果
好了到此就告一段落了,大家*发挥吧.
我的一个阶段目标达成,也要停下来想想接下来研究点撒,估计是FPGA,下一个目标。