在TouchGFX里面选择Stm32F746G-Discovery开发板模板,简单创建界面,创建完成后在CubeIDE中编译并下载,Stm32F746显示屏正常显示画面。但在CubeIDE里面带的CubeMX简单设置之后(创建一个空的freertos任务或者勾选了为每个模块生成一对.c.h文件)生成代码再次下载到Stm32F746板子上的时候黑屏了,我又重复了上述步骤几次,依然是TouchGFX生成完代码时不用CubeMX再次生成代码才能正常显示画面。
困扰许久,希望各位指点。♥(。→v←。)♥
关于TouchGFX在Stm32上无法显示画面的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
看起来你在尝试将TouchGFX与STM32F746 Discovery开发板以及FreeRTOS一起使用时遇到了一些问题。首先,确保你已经正确地配置了TouchGFX和FreeRTOS之间的集成。这里是一个可能的解决步骤列表:
-
检查中断配置: 确保在CubeMX中配置了正确的中断优先级,特别是触摸屏中断。这可能会导致屏幕无响应。在STM32F7的中断控制器(TIM20)中,你需要将触摸屏中断设置为足够高的优先级。
-
检查FreeRTOS任务调度: 如果你启用了FreeRTOS任务,确保主循环没有被阻塞。默认情况下,FreeRTOS的任务调度器可能不会立即运行,除非有一个任务挂起等待某个事件。你可以在
main.cpp中的vTaskStartScheduler()调用前添加一些简单的调试输出,看看调度是否按预期进行。 -
初始化顺序: 确保在初始化FreeRTOS之前完成了TouchGFX的初始化。TouchGFX的初始化通常发生在
GUI_Init()函数中,在main.cpp的开始部分执行。 -
内存分配: FreeRTOS可能会重新映射堆区,确保TouchGFX没有尝试在被FreeRTOS占用的内存区域中分配内存。你可以检查
touchgfx_config.h文件,确认是否有任何内存池的大小或位置与FreeRTOS冲突。 -
中断处理程序: 检查FreeRTOS的中断上下文切换是否与TouchGFX的中断处理相兼容。如果不兼容,可能需要在中断服务例程(ISR)中禁用调度,然后在ISR结束时恢复调度。
-
驱动兼容性: 确认你使用的TouchGFX库版本与STM32F746 Discovery开发板的驱动兼容。有时候,旧版的库可能不支持新硬件的功能。
-
更新 CubeMX 和 TouchGFX 版本: 更新你的CubeMX和TouchGFX到最新版本,以获取最新的错误修复和功能。
-
代码审查: 分析生成的代码,看看是否有明显的错误或异常行为。例如,检查中断向量表、内存分配、任务栈溢出等问题。
-
调试: 使用JTAG或SWD调试器,查看程序执行流程。设置断点在关键点,比如
GUI_Init()、FreeRTOS 初始化、中断处理程序等地方,观察变量状态和执行路径。
如果你仍然遇到问题,可以考虑提供更详细的日志信息,或者在GitHub上分享你的项目,以便其他人能更好地帮助你分析问题。同时,检查TouchGFX官方论坛和Stack Overflow上的类似问题,那里可能已经有了解决方案。
如果你需要具体代码示例或进一步的帮助,请随时告诉我,我会尽力提供支持。
解决 无用评论 打赏 举报 编辑记录-