Pomyślałem sobie że ... jeśli masz zmienne "unsigned 4-Bytes" i rezultat ma być "unsigned 4-Bytes" ale obliczenia potrzebujesz wykonać w precyzji "unsigned 8-Bytes" ... to można po prostu użyć jawnej konwersji typów (explicit type conversion) bezpośrednio w samym równaniu ...
A żeby być jeszcze bardziej pewnym ... można zastąpić 4294967296ULL poprzez (((Uint64_t)1) << 32) albo (((Uint64_t)65536UL) * ((Uint64_t)65536UL))
Kod:
Uint32_t FTW, fs, frequency;
fs = 400000000UL;
// ...
FTW = ((Uint32_t)( 4294967296ULL * ((Uint64_t)frequency) / ((Uint64_t)fs) ));A żeby być jeszcze bardziej pewnym ... można zastąpić 4294967296ULL poprzez (((Uint64_t)1) << 32) albo (((Uint64_t)65536UL) * ((Uint64_t)65536UL))

