ST意法半导体
直播中

王凯

7年用户 1287经验值
私信 关注
[问答]

有没有办法在TouchGFX中使用队列来禁用模拟器?

我想在不牺牲模拟器的情况下使用队列。
我知道如何使用带有 extern 关键字的队列,但它会禁用模拟器,因为 TouchGFX 看不到头文件和源文件。我已经编辑了 Makefile 以包含标题,但我还有两个问题。
第一个问题是包括 reent.h:

如果我不包含 FreeRTOS.h,我会收到此错误:

到目前为止,这是我在 Makefile 中修改的内容:
  • project_path := $(call qs,$(abspath $(call sq,$(makefile_path)../../..)))
  • ADDItiONAL_SOURCES :=
  • ADDITIONAL_INCLUDE_PATHS := $(project_path)/Core/Inc
  •         $(project_path)/STM32CubeIDE/Application/User
  •         $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/include
  •         $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F
  •         $(project_path)/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
  • ADDITIONAL_LIBRARY_PATHS :=
  • ADDITIONAL_LIBRARIES :=
还包括 cmsis_os2.c 文件,该文件包含我在 ADDITIONAL_SOURCES 中使用的结构和函数的定义并没有帮助。
那么,简而言之,有没有办法在 TouchGFX 中使用队列来不禁用模拟器?如果从 CubeIDE 编译代码有效,但从 TouchGFX 编译不工作。如果可能的话,我想在 TouchGFX 中启用所有 FreeRTOS 功能,以免以后出现其他问题。
编辑:
这很懒惰,但既然我已经做了这个线程,我不妨问一下。
由于我在模拟器中不需要 FreeRTOS,我只需要队列将一些数据发送到其他任务,我希望模拟器能够轻松调试 GUI,是否有一些 TouchGFX #define我可以用来从编译中排除 FreeRTOS 代码从 TouchGFX 编译时,但从 CubeIDE 编译时包含它?



回帖(1)

冯待策

2022-12-9 11:06:26
为了回答您的懒惰问题,有一个自动定义的 SIMULATOR 符号,您可以使用它来控制 CubeIDE 中包含的内容,但不包括模拟器代码 ( #iifndef SIMULATOR)。当不在模拟器中时,我用它来包含与硬件相关的代码,并在模拟时使用假数据。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分