Tak wygląda zapis zmiennej do rejestru CCR1 timera TIM2 w uC stm32.
float u = function();
*(uint32_t*)(0x40000000U + 0x34) = (uint32_t)(u);
Pytanie dlaczego zapis wygląda tak a nie inaczej. Pierwsza gwiazdka jest dla mnie oczywista, ponieważ wskazujemy miejsce w pamięci gdzie ma być zapisana zmienna. Nie wiem natomiast co oznacza to wyrażenie:
(uint32_t*)
Bez tego wartość nie jest zapisana do rejestru.