Hi,
in dem freien Quellcode (Autoquad 6: http://autoquad.org/?lang=de) habe
ich folgende C-Zeile gefunden:
1 | #define FLASH_WRITE_ADDR (0x08000000 + (uint32_t)FLASH_PAGE_SIZE * 63) // use the last KB for storage
|
Soweit ich verstehe, handelt es sich darum, um die Bestimmung der
Adressen in der FLASH des Mikrocontrollers (ein STM32F103).
Ok. In einer anderen Datei wird dann eine
Variable deklariert und der folgende Wert zugewiesen:
1 | ver = *(float *)FLASH_WRITE_ADDR;
|
Mir ist diese Zuweisung nicht klar. Was wird zugewiesen? Eine Adresse
eines Zeigers? Oder ein Zeiger?
Verblüffend finde ich, dass es dann geprüft wird, ob die Variable var
einen gültigen float Wert besitzt oder nicht.
1 | if (isnan(ver))
|
2 | configWriteFlash();
|
3 | else if (ver >= p[CONFIG_VERSION])
|
4 | configReadFlash();
|
5 | else if (p[CONFIG_VERSION] > ver)
|
6 | configWriteFlash();
|
Dann wird es doch in ver ein float Wert zugewiesen?
@_@