2017-08-15 297 views
0

我正在与STM32CubeMX生成stm32f469i迪斯科项目stm32f469 FreeRTOS操作系统+ STemWin与CubeMX和Keil:不好操作数类型(UnDefOT,常数)运算符(*

我已根据设置的“FreeRTOSConfig.h中“从‘示范’在STM32CubeFWF4V1.16.0回购。从CubeMX新鲜的项目编译没有问题的项目,但加入STemWin LIB后‘STemWin532_CM4_OS_Keil_ot.lib’我得到的错误

"..........\Middlewares\ThirdParty\FreeRTOS\Source\portable\RVDS\ARMCM4F\port.c(507): error: A1586E: Bad operand types (UnDefOT, Constant) for operator ("

有趣的事实是,‘示范’汇编没有这个错误。

我怎么配置的项目:

在CubeMX:

  1. 添加periphs需要:DMA2D,DSIHost,FMC等

  2. 加入BSP驱动触摸屏等 现在它复制没有问题。

  3. 克隆 “时钟配置” 基于 “Demonstations”

  4. 在 “配置” 选项卡我克隆基于代码的所有配置从 “示范”

然后在凯尔: 5。我在目标选项中更新了包含路径。

  • 添加的所有文件STemWin,当我试图编译: “...坏数类型......”
  • 当我在CubeMX禁用FreeRTOS操作系统并添加非操作系统STemWin lib,它编译时没有问题。 当我尝试在启用FreeRTOS的情况下编译non_OS STemWin库时,它会失败并显示相同的消息。

    我试过做什么? 更新port.c.没有改变。

    我在创建项目时错过了什么吗?

    回答

    0

    花了2天的时间找出可能是这个错误的原因,我刚刚发现它,我的项目现在编译启用FreeRTOS和所有其他来源最初使用。那么,它显然是stm32f4xx_hal.h文件的递归包含。我已经添加了演示包中的一些模块,并且这些模块有一些相关性。因为我想从某些模块中删除一些功能,所以我手动添加了所需功能的包含/资源,这导致了该错误,因为我没有为我的包含添加任何警卫。

    出错行是port.c文件,错误是因为传递到装配线483错误的恒定值:mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY

    更换configMAX_SYSCALL_INTERRUPT_PRIORITY任何数值在编译代码帮助,但我认为我不应该这样说,如果我找出问题的原因会更好。

    更多可以在这里找到: https://community.st.com/thread/44751-portc483-error-a1586e-bad-operand-types-undefot-constant-for-operator

    相关问题