2017-08-15 2 views
0

Ich Projekt machen mit STM32CubeMX generiert für stm32f469i-Discostm32f469 FreeRTOS + STemWin mit CubeMX und keil. Bad Operanden-Typen (UnDefOT, Constant) für Operator (*

Ich habe basierten Setup auf „FreeRTOSconfig.h "von "Demonstration" Projekt in STM32CubeFWF4V1.16.0 Repo. Frisches Projekt von CubeMX ohne Probleme kompiliert, aber nach dem Hinzufügen STemWin lib "STemWin532_CM4_OS_Keil_ot.lib" ich erhalte den Fehler

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

interessante Tatsache ist, dass "Demonstration" kompiliert ohne diesen Fehler

Wie bekomme ich das Projekt konfiguriert:

In CubeMX:

  1. hinzufügen periphs benötigt: DMA2D, DSIHost, FMC usw.

  2. hinzufügen BSP Treiber für Touchscreen usw. Jetzt Es macht ohne Probleme.

  3. Clone "Clock-Konfiguration" auf "Demonstrationen"

  4. In Register "Konfiguration" ich alle Konfiguration klonen basierend auf Code von "Demonstrationen"

Dann in Keil: 5. Ich aktualisiere Include Path in Zieloptionen.

  1. Fügen Sie alle STemWin Dateien und wenn ich versuche zu kompilieren: "... Bad Operandentypen ..."

Wenn ich deaktivieren FreeRTOS in CubeMX und fügen Sie nicht-OS STemWin Lib es kompiliert ohne Probleme. Wenn ich versuche, non_OS STemWin lib mit FreeRTOS zu kompilieren, schlägt es mit der gleichen Nachricht fehl.

Was habe ich versucht? Update port.c. Nichts hat sich geändert.

Fehle ich etwas beim Erstellen eines Projekts?

Antwort

0

Nach zwei Tagen, um herauszufinden, was der Grund für diesen Fehler sein könnte, habe ich es gefunden und mein Projekt kompiliert jetzt mit FreeRTOS aktiviert und alle anderen Quellen verwendet zunächst. Nun, es ist anscheinend ein rekursives Include für die Datei stm32f4xx_hal.h. Ich habe einige Module aus dem Demopaket hinzugefügt und diese haben einige Abhängigkeiten. Da ich einige Funktionen aus einigen Modulen entfernen wollte, habe ich manuell die Includes/Resources für die benötigten Funktionen hinzugefügt, was zu diesem Fehler beigetragen hat, da ich meine Includes nicht mit Wächtern versehen habe.

Die Codezeile war in port.c Datei, und der Fehler war aufgrund einer falschen konstanten Wert an die Leitungsanordnung übergeben 483: mov r0, #configMAX_SYSCALL_INTERRUPT_PRIORITY

Ersetzen configMAX_SYSCALL_INTERRUPT_PRIORITY mit jedem numerischen Wert hat bei der Erstellung des Codes geholfen , aber ich dachte, ich sollte es nicht so lassen und es wäre viel besser, wenn ich den Grund für das Problem herausfinden würde.

Weitere Informationen finden Sie hier: https://community.st.com/thread/44751-portc483-error-a1586e-bad-operand-types-undefot-constant-for-operator

Verwandte Themen