Wenn dies nicht erkannt wird, liegt dies daran, dass kein entsprechender Systemkopf mit der Definition enthalten ist.
Es wird in der Chip-Support-Header-Datei definiert, die mit der Toolchain zur Verfügung gestellt wird. Es ist Typqualifizierer oder eher ein Makro (#define
), das zu einem Typqualifizierer erweitert wird. Es wird beispielsweise wie folgt verwendet:
__IO uint8_t CSSR;
Hier uint8_t
ist die Art, so __IO kann nicht in der Tat ein typedef
sein, weil es nicht verwendet wird, wo ein Typ gültig ist. Das __IO-Makro wird entsprechend dem jeweiligen Compiler erweitert, um einen korrekten E/A-Zugriff und eine korrekte Adressierung zu gewährleisten. In dem typischen Fall, in dem E/A Speicher zugeordnet ist, wird es einfach auf volatile
erweitert, da alle E/A als flüchtig deklariert werden sollten, um sicherzustellen, dass explizite Zugriffe nicht optimiert werden.
Wenn Sie sicher sein möchten, laden Sie eine Demoversion der IAR-Tools herunter und schauen Sie in den Header-Dateien nach, wie sie für Ihre spezielle Architektur definiert sind. Sonst könnten Sie einfach #define __IO volatile
'#define __IO volatile' oder auch nur' #define __IO ' –
@ Eddy_Em: Post Antworten als Antworten nicht als Kommentare. – Clifford
Wenn es ein unerkanntes Symbol ist, wie weißt du, dass es ein typedef ist? (es ist nicht). Einige Beispiele für den Code, auf den Sie sich beziehen, könnten nützlich sein. – Clifford