Ich kann diesen Teil des Codes nicht verstehen Kann mir jemand erklären, was vor sich geht?Funktionsname umgewandelt in uint32_t
Ich habe ein 2 Funktionen:
void timer_irq_handler(void) {
....
}
void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
....
}
dann habe ich so etwas wie dieses:
NVIC_SetVector(TIM_MST_IRQ, (uint32_t)timer_irq_handler);
Ich verstehe nicht leer Funktion (uint32_t)
Es wirft den Funktionszeiger (vom Typ 'void (*) (void)') auf ein 'uint32_t', vermutlich um es in einem Interrupt-Vektor zu speichern. –
Danke für die schnelle Antwort, jetzt verstehe ich mehr, aber eine weitere Frage, um vollständig erzogen werden. Was ist das Ergebnis dieses Castings? ist es die Adresse dieses Zeigers? – Wodji
Es ist geradezu tödlich, wenn das System ein 64-Bit-System ist. Bei einem 32-Bit-System wird der Zeiger als Zahl übertragen - keine besonders gute Übung, aber es würde wahrscheinlich "funktionieren". Der Code sollte 'uintptr_t'; Es wird dann auf Maschinen arbeiten, wo 'sizeof (void *) == sizeof (void (*) (void))', das ist die meisten (aber nicht alle) Maschinen. –