2017-08-15 102 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

    相關問題