随着TouchGFX的免费开放,F429 Discovery作为TouchGFX支持的入门级开发板,也可以体验TouchGFX嵌入式GUI惊艳的效果了,用最新的CubeMX5.0自带的固件包的Dome演示项目文件,可以下载到F429 Discovery开发板体验一下。在体验过后,自然就是想模仿例程做一个自己的GUI来体会一下TouchGFX的强大功能。用CubeMX5.0可以方便的生成TouchGFX的项目模板,这里不再详述。在生成模板后,已经编译,会发现CubeMX埋了好多的坑,竟然弹出了上百条的错误信息,借鉴前人高手的经验,手动添加TouchGFX Lib库,去掉一些Cube自作聪明添加的一些没用的.c文件,然后将一些CPP函数用extern "C"声明一下,可以正常编译通过了。不过有一个STMEP811.c的文件是触摸驱动,这个不能去掉,但是加上的话,又会出现一个错误提示,导致编译无法通过,而显示屏的触摸功能是必须要有的,这个坑搞了一个下午,终于解决了。
原来CubeMX在生成项目模板的时候少添加了部分文件,其中就包括触摸驱动文件,将文件手动添加进项目就完美解决了。下面是项目修改的步骤:
1、在STM32F4TouchController.cpp文件中将预先注释掉的两段触摸语句恢复。
BSP_TS_Init(LCD_GetXSize(), LCD_GetYSize());
TS_StateTypeDef state;
BSP_TS_GetState(&state);
if (state.TouchDetected)
{
x = state.X;
y = state.Y;
return true;
}
注意修改state.x和y为大写X、Y
2、将CubeMX F4 discovery的驱动目录整个复制到项目文件的BSP目录,并添加stm32f429i_discovery.c和stm32f429i_discovery_ts.c到项目文件,同时在项目设
置里添加相应的头文件路径
C:\Users\Administrator\STM32Cube\Repository\STM32Cube_FW_F4_V1.23.0\Drivers\BSP\STM32F429I-Discovery //这是目标目录位置,根据个人电脑略有不同
3、注释或删除BoardConfigury.cpp中的一个LCD延时函数。
/*void LCD_Delay(uint32_t Delay)
{
HAL_Delay(Delay);
}*/
至此,触摸驱动添加完毕,点编译,工程顺利编译通过,烧入F429 Discovery开发板,显示、触摸工作正常。
注:LCD时钟在主频168M下,最高可以到18M,再高就会花屏,官方推荐是设置为6M。
|